考虑下面这个简单的HTML:
<div class="someContainer">
<h5>Some other information</h5>
</div>
而下面的骨干观点:
var view = Backbone.View.extend({
events: {
'click .someContainer': performAction
},
performAction: function (evt) {
// Do things here
}
});
我发现自己做下面的代码位颇有几分,这似乎是一个代码气味给我。 是不是我做错了,或者有更好的方式来做到这一点?
...performAction: function (evt) {
// Check to see if the evt.target that was clicked is the container and not the h5 (child)
if ($(evt.target).hasClass('someContainer')) {
// Everything is ok, the evt.target is the container
} else {
// the evt.target is NOT the container but the child element so...
var $container = $(evt.target).parent('.someContainer');
// At this point I now have the correct element I am looking for
}
}
这工作,很明显,但我不知道这是很好的代码编写随处可见。 我可以让我可以只调用一个方法,但我不知道,其实校正代码味道,它只是外包到其他地方。