jQuery click事件的行为与Firefox中的实时功能不同

fjs*_*jsj 3 ajax firefox jquery

在使用Firefox *时,将事件单击与实时功能一起使用会导致奇怪的行为。使用Firefox实时版时,也可以在右键单击时触发单击!在Internet Explorer 7和Google Chrome中都不会发生相同的情况。

例:

  • 如果没有直播,请进行演示并尝试右键单击段落。将出现一个对话框菜单。
  • 使用live进行演示,然后尝试右键单击“单击我!”。现在,同时出现对话框菜单和“另一段”。

*使用Firefox 3.5.3测试

kar*_*m79 5

据我所知,这是一个已知问题(错误?)。您可以通过如下测试单击哪个按钮来轻松解决该问题:

$('a.foo').live("click", function(e) { 
    if (e.button == 0) { // 0 = left, 1 = middle, 2 = right 
        //left button was clicked
    } else {
        //other button was clicked (do nothing?)
        //return false or e.preventDefault()
    }
}); 
Run Code Online (Sandbox Code Playgroud)

您可能希望switch根据自己的特定要求使用a ,但是通常,如果单击了除左按钮之外的任何按钮,则您可能只想不做任何事情(或只是简单地返回),如上所述:

    $('a.foo').live("click", function(e) {
        switch(e.button) {
            case 0 : alert('Left button was clicked');break;
            default: return false;
        }
    });
Run Code Online (Sandbox Code Playgroud)