gpt4 book ai didi

javascript - 如何触发动态分配的 DOM 事件以及 Backbone 事件?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:49:48 25 4
gpt4 key购买 nike

我想在每个页面的 mousedown 按钮上附加一个加载器。

我有一个函数在布局呈现并通过顶层 View 后触发,然后捕获每个按钮并在其上附加一个 mousedown 事件:

attachGlobalButtonEventHandler : function(view){
view.$el.find('button.viewtag, button.newtag').on('mousedown', function(){
var $target = $(this);

$target.addClass('activated');
$target.prop('disabled', true);
});
}

这工作正常,但问题是我的按钮上的主干事件没有被触发,看起来像:

events : {
'click .newtag' : 'gotoCreate'
},
gotoCreate : function(evt) {
evt.preventDefault();

app.router.navigate('somewhere', true);
}

如果我删除 attachGlobalButtonEventHandler,则点击 newtag 会正常触发,但如果附加了处理程序则根本不会触发。我怎样才能确保主干单击事件也会触发?

最佳答案

这里的问题是disabled属性和订单事件被执行。

mousedown 事件发生在 click 事件之前,在 mousedown 回调中禁用按钮,从而删除 click 事件完全。

检查这个jsFiddle出去。如果您注释掉 $(this).prop('disabled', true); 行,则 click 事件将触发。

通过添加 setTimeout,您可以在下一次报价时有效地执行它,参见 jsFiddle了解详情。

编辑:我刚刚注意到@codemonkey 添加了一条暗示同样事情的评论。

关于javascript - 如何触发动态分配的 DOM 事件以及 Backbone 事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17223345/

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