0

在我的网站中,我有以下 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 中的嵌套事件处理程序是如何工作的,然后我最终会弄脏其他东西,如果确实如此的话。

4

0 回答 0