javascript - 主干事件没有捕捉到对 div 的点击

标签 javascript backbone.js

我有下一个 html 结构:

<div class="wrapper">
    <div class="top"></div>
    <div class="bottom></div>
</div>

我在主干 View 中设置了下一个事件:

className: 'wrapper',
events: { 
    'click .wrapper' : 'click_handler'
},
click_handler: function(event) {
    console.log("click handled")
}

此代码不会在单击包装器时触发单击事件,但如果我将单击选择器更改为“.top”或“.bottom”,则会触发单击。

我做错了什么?与Capture/Bubble有关吗?

最佳答案

div.wrapper 是您 View 的 $el 吗? 'click .wrapper' 表示委托(delegate)事件处理程序,这意味着它只会触发具有 .wrapper 类的 View $el 的后代。

jQuery's documentation for .on 描述了事件委托(delegate)。

编辑

从您的事件哈希中删除 .wrapper 可能会给您带来您正在寻找的行为。换句话说:

className: 'wrapper',
events: { 
    'click' : 'click_handler'
},
click_handler: function(event) {
    console.log("click handled")
}

关于javascript - 主干事件没有捕捉到对 div 的点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22611135/

相关文章:

javascript - 为什么这段代码返回未定义?

javascript - MongoDB - Mongoose $inc 文档数组内的对象

javascript - 限制集合 - .first 不适用于 CompositeViews

javascript - 如何选择具有相同类名的所有元素?

javascript - 如何对刮掉的元素进行排序?

javascript - 如果找不到图像,如何防止显示图像占位符?

javascript - 确定 DOM 被操作/附加的次数

javascript - backbone.js、davis.js 和 history.js 的历史实现差异

javascript - Marionette 未导航到同一网址

javascript - Backbone.js 从它的初始化方法中获取集合