如何在Backbone.js事件处理程序中指定子节点?

How do I specify children only in the Backbone.js event handler?

本文关键字:子节点 程序 事件处理 Backbone js      更新时间:2023-09-26

我有一个视图里面有一个视图(相同的视图实际上,它的递归)。我希望只有内部视图来处理从'a' onclick事件的事件。我试图通过在选择器中只指定直接子元素来做到这一点,但它不起作用。

第四尝试:<>之前事件:{'click>a': 'toggle'},之前

<>之前事件:{'click> a': 'toggle'},之前

但是他们不工作,有什么建议吗?(注意:像使用标签和类这样的事情是行不通的,因为视图是递归的(这意味着内部和外部都有相同的事件定义)

我遇到了同样的问题,并通过在子视图中停止事件的传播来解决它。例如…

events: {
    'click a': 'toggle'
},
toggle: function (e) {
    // Stop event here.
    e.stopImmediatePropagation();
    // Do more stuff...
}

这并不能回答如何指定特定子选择器的问题,但它可以防止事件传播到其他处理程序。

如果单击特定元素时没有其他事件触发,则

e.stopImmediatePropagation()很方便。否则,您应该将e.currentTarget与您想要选择的元素进行比较。例如

events: {
    'click a': 'toggle'
}
toggle: function(e) {
    if (e.currentTarget == this.$el.find('a')[0]) {
        ...
    }
}

这样,如果你有一个父视图也触发一个事件当链接被点击,它不会被e.stopImmediatePropagation();

停止

您可能必须指定开始选择器…这意味着我不确定基本选择器是假设的。

events: {
    'click #parent > a': 'toggle'
}

还没有试过,但它可能工作。