gpt4 book ai didi

javascript - jQuery - 覆盖事件?

转载 作者:行者123 更新时间:2023-11-29 18:37:12 25 4
gpt4 key购买 nike

我的页面包含一些可拖动的 div 元素(不是 jQuery UI 可拖动的)。

现在我们要添加一个新功能:用户应该能够一次选择多个 div 并拖动这些 div 元素而不触发先前的绑定(bind)事件。

现在这是我的问题:

是否可以禁用每个 divmousedownmousemovemouseup 事件,只要它们是选择的一部分?

所以基本上我想用新事件替换旧事件,然后恢复原始事件。

谢谢你的时间


更新:

我写了一个小脚本来测试 stopImmediatePropagation

jsBin demo

使用以下代码:

$("p").click(function(event){
alert ( ' I am the old event ' );
});

$("a").click( function()
{

$("p").click(function(event){
event.stopImmediatePropagation();
alert ( ' I am the new event ' );
});


return false;
});

它不起作用,因为 event.stopImmediatePropagation(); 在第一个事件之后被调用。所以输出是:

I am the old event

I am the new event

最佳答案

你可以看看 event.stopImmediatePropagation()

请参阅 jQuery docs 中的此处

基本上,您可以让一个函数选择性地阻止其他函数运行 - 您不需要删除和重新绑定(bind)这些函数。


这是您从 JSBin 中获取的代码,我已对其进行修改以使其正常工作。这有点 hacky,可能效率不高,但它确实有效!

$("p").click(function(event){
alert ( ' I am the old event ' );
});

$("a").click( function() {
$("p").each(function() {
var $t = $(this);
var events = $t.data("events");
$t.unbind('click');
$t.click(function(event){
event.stopImmediatePropagation();
alert ( ' I am the new event ' );
});
for (var i = 0, l = events.length; i < l; ++i) {
$t.click(events[i]);
}
});
return false;
});

关于javascript - jQuery - 覆盖事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1715609/

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