javascript – jQuery live(‘click’)点击右键单击

前端之家收集整理的这篇文章主要介绍了javascript – jQuery live(‘click’)点击右键单击前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我注意到jQuery中的live()函数有一个奇怪的行为:
<a href="#" id="normal">normal</a>
<a href="#" id="live">live</a>

$('#normal').click(clickHandler);
$('#live').live('click',clickHandler);

function clickHandler() {
    alert("Clicked");
    return false;
}

直到你右键单击“直播”链接并且它触发处理程序,然后才显示上下文菜单,这很好.在“正常”链接上,事件处理程序根本不起作用(如预期).

我已经能够通过将处理程序更改为这个来解决它:

function clickHandler(e) {
    if (e.button != 0) return true;
    // normal handler code here
    return false;
}

但是,对于所有的事件处理程序来说,这真的很麻烦.有什么更好的方法让事件处理程序只像普通的点击处理程序一样发火吗?

解决方法

这是一个 known issue

It seems like Firefox does not fire a
click event for the element on a
right-click,although it fires a
mousedown and mouseup. However,it
does fire a click event on document! Since .live catches
events at the document level,it sees
the click event for the element even
though the element itself does not. If
you use an event like mouseup,both
the p element and the document
will see the event.

您的解决方法是您现在可以做的最好的.它似乎只影响Firefox(我相信它实际上是Firefox中的一个bug,而不是jQuery本身).

另见this question昨天问.

原文链接:https://www.f2er.com/jquery/151449.html

猜你在找的jQuery相关文章