在我的网站中,我有以下 jQuery/JavaScript 片段:
$("span.testLink").mousedown(function (event) {
if (event.which == 1) {
event.stopPropagation();
$("span.testLink").mouseup(function (e) {
if (e.which == 1) {
var urlEncoded = encodeURI($(this).parent().find("input").val());
window.open(urlEncoded);
}
});
$(this).css("color", "#0b3773");
}
});
很容易说出我期望在这里发生的事情(尽管很明显,我的期望在某处有所偏离),但为了完整起见:有一个链接应该像它具有简单的.click()
事件处理程序一样(因为它mouseup()
是嵌套在mousedown()
我认为的左右)。显然,这不是这种工作方式,因为我可以单击并按住元素外部的鼠标左键span.testLink
,向后拖动span.testLink
元素,然后释放鼠标左键,$("span.testLink").mouseup()
事件仍然会触发。
显然,我不知道什么时候会触发这个嵌套事件。我的问题是为什么以及如何以不同的方式做这件事?
附加信息:
除其他外,该span.testLink
元素嵌套在jQueryUI
可排序元素中。不确定这是否重要,但认为这绝对值得一提。如果这个问题的答案是“不,这应该可以。检查你的插件。”,那很好。我只需要确保我了解 jQuery 中的嵌套事件处理程序是如何工作的,然后我最终会弄脏其他东西,如果确实如此的话。