在我的网站中,我有以下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");
}
});
很容易说出我期望在这里发生的事情(尽管很明显,我的期望已经到了某个地方),但为了完整起见:有一个链接应该就像它有简单的{{1事件处理程序(因为.click()
嵌套在mouseup()
左右,我思想)。显然,这不是它的工作方式,因为我可以在mousedown()
元素之外单击并按住鼠标左键,向后拖动span.testLink
元素,然后释放鼠标左键和{ {1}}事件仍然会触发。
显然,我错误地预计这个嵌套事件何时会触发。我的问题是为什么以及如何以不同的方式做这件事?
其他信息:
span.testLink
元素等嵌套在$("span.testLink").mouseup()
可排序元素中。不确定这是否重要,但认为这绝对值得一提。如果这个问题的答案是“不,这个应该工作。检查你的插件。”,这很好。我只需要确保我理解jQuery中的嵌套事件处理程序如何在我最终结束其他事情之前工作,如果确实如此。