为什么我不能在 Backbone 的视图事件中的一个语句中将单个事件绑定到多个选择器

Why can't I bind a single event to multiple selectors in one statement in Backbone's View events?

本文关键字:事件 语句 选择器 一个 单个 绑定 不能 Backbone 视图 为什么      更新时间:2023-09-26

我有以下骨干视图:

var View = Backbone.View.extend({
    events: {
      'change [name="title"], change [name="body"]': 'onChangeEvent'
    },
    onChangeEvent: function (e) {
       // fires only for change [name="title"] event
    }
});

我需要将onChangeEvent方法绑定到change [name="title"]change [name="body"]事件。但是onChangeEvent方法只针对change [name="title"]事件调用,而不为change [name="body"]调用。

请帮助我,我做错了什么?

来自精细手册:

代表事件delegateEvents([events])
[...]事件以 {"event selector": "callback"} 格式写入。

因此,所讨论的事件是 events 对象中键的第一个空格分隔组件。将其应用于您拥有的内容,'change'作为事件,[name="title"], change [name="body"]作为选择器;此外,逗号是一个多重选择器,因此您的选择器(如 Backbone 所见)正在查找具有name="title"属性或具有name="body"属性的<change>元素。您没有任何<change>元素,但您确实有name="title"元素,因此您会看到事件触发行为。

您可以将一个事件条目与多个选择器一起使用:

events: {
  'change [name="title"], [name="body"]': 'onChangeEvent'
  // -------------------^ but no extra 'change'
}

或两个单独的事件条目:

events: {
  'change [name="title"]': 'onChangeEvent',
  'change [name="body"]' : 'onChangeEvent'
}