gpt4 book ai didi

javascript - stopImmediatePropagation 未按预期工作

转载 作者:行者123 更新时间:2023-11-29 14:55:17 25 4
gpt4 key购买 nike

考虑以下代码:

HTML

<a href="http://www.google.com" target="_blank" id="myLink" class="anyclass">testlink</a>

JavaScript

$('#myLink').on("mousedown",doMouseDown);

function doMouseDown(e)
{
e.stopImmediatePropagation();
console.log("Mouse down");
return true;
}

这是我的代码的一个非常简化的版本,但问题是完全一样的。简而言之:在我的处理程序中使用 e.stopImmediatePropagation(),我希望在单击链接时不会将我发送到 Google。我应该只执行 console.log()。我所有的研究表明我的想法是对的,但它仍然同时执行“鼠标按下”处理程序和链接的默认“点击”处理程序(即它在新选项卡中打开 Google)。

我试过,没有说服力,添加一个 e.preventDefault() 作为我的处理程序的第一条指令,我试过返回 false ,我已经尝试在绑定(bind)时将我的处理程序定义为匿名函数,我尝试简单地从匿名函数调用它,所有这些都以不同的组合进行,没有任何改进。我必须承认我完全没有办法解决这个问题。你们中的任何人都可以为我指明正确的方向吗?任何帮助将不胜感激。

如果你想测试,here's the fiddle

最佳答案

试试这个

var i=0;
$('#myLink').on('mousedown mouseup click', function(e) {

e.preventDefault();
e.stopImmediatePropagation();
console.log(e.type);
console.log(i);
i++;
});

在控制台打印

"mousedown"
0
"mouseup"
1
"click"
2

和使用

var i=0;
$('#myLink').on('mousedown mouseup click', function(e) {
if(i>0)
{
return false;
}
e.preventDefault();
e.stopPropagation();
console.log(e.type);
console.log(i);
i++;
});

在控制台打印

"mousedown"
0

关于javascript - stopImmediatePropagation 未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18746243/

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