edit View 定义如下: src.views.WinesView = Backbone.View.extend({ [...] e-6ren">
gpt4 book ai didi

jquery - Backbone : getting the view element that triggered an event

转载 作者:行者123 更新时间:2023-12-01 06:52:55 25 4
gpt4 key购买 nike

我有一个这样的模板:

<a class="btn btn-info btn-small edit"  model-id="<%= model.id %>" href="">
<i class="icon-pencil icon-white"></i>
edit
</a>

View 定义如下:

src.views.WinesView = Backbone.View.extend({
[...]
events: {
'click a.edit': 'edit'
},

edit: function(e) {
e.preventDefault();
var a = $(e.target);
var id = a.attr('model-id');
app.edit(id);
},
[...]

如果用户单击“编辑”文本,一切正常,但如果用户单击图标铅笔图标(标签的内容),事件会正确引发,但 e.target 指向 i标签,而不是 a。

事实上,我想要的是,如果我绑定(bind)到 tfire 的标签内的任何标签触发一个事件,我希望引发该事件并轻松获取对我从主干绑定(bind)的元素的引用...

我可以用以下方法解决它:

edit: function(e) {
e.preventDefault();
var a = $(e.target);
if (a[0].tagName!=='A') { a = a.parent(); }
var id = a.attr('model-id');
app.edit(id);
},

但我想知道是否有更好、更优雅、更通用的方法来实现它......

最佳答案

查看jQuery's $.closest() method :

edit: function(e) {
e.preventDefault();
var a = $(e.currentTarget).closest('a');
var id = a.attr('model-id');
app.edit(id);
},

关于jquery - Backbone : getting the view element that triggered an event,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12048310/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com