我使用的是Backbone.js,每个模型的视图都有一个分段的控件类型的UI元素。它们每个都由一个带有几个li元素的ul组成。我想绑定一个事件,这样当这些元素中的一个元素被单击时,我就可以确定哪个元素被单击了,并用适当的值更新模型。
问题是Backbone绑定了事件(这些事件在视图的事件散列中),因此回调函数中的"this“指的是视图,而不是li元素。这意味着我无法确定单击了几个li元素中的哪一个。如果我使用一个普通的jQuery绑定,我可以将"this“绑定到li元素,但是这样我就不能再跟踪模型了,所以我不能更新它。
发布于 2011-03-11 21:03:24
在我看来,jQuery习惯于将this
设置为当时方便的任何内容,这是一个非常糟糕的模式--幸运的是,您永远不需要依赖它:
onClick: function(e) {
this; // Still the view instance (as it should be).
e.target; // The element that was clicked.
e.currentTarget; // The element that was bound by the click event.
}
..。您可以根据需要使用事件对象的target
或currentTarget
。
https://stackoverflow.com/questions/5270188
复制相似问题