var ViewA = Backbone.View.extend({
events: { 'click a': 'do_something' },
do_something: function() { console.log('ViewA::do_something()'); }
});
var ViewB = Backbone.View.extend({
events: { 'click a.some_class': 'do_something' },
do_something: function() { console.log('ViewB::do_something()'); }
});
////////
<a class="some_class">Click me</a>
我有两个视图设置绑定到点击事件,如上所示。出于某种原因,ViewA的处理程序总是首先被调用。
我试过:
- 更改JS的加载顺序
- 更改视图的初始化顺序
这让我相信这取决于选择器的特殊性,但考虑到ViewB中的选择器比ViewA中的选择器更特定,这也没有意义——为什么会首先调用更通用的选择器?
好吧,我想好了——对于将来遇到这种情况的人来说。事件的顺序由(按重要性顺序(确定:
- 视图中"el"元素的特殊性
- 事件选择器的特殊性
- 视图的初始化顺序