如果在jQuery中没有触发父事件,为什么嵌套的事件处理程序仍在触发?

时间:2013-09-26 19:25:20

标签: javascript jquery

在我的网站中,我有以下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中的嵌套事件处理程序如何在我最终结束其他事情之前工作,如果确实如此。

0 个答案:

没有答案