jQuery preventDefault()停止onclick工作

时间:2015-02-24 11:03:23

标签: jquery preventdefault

我遇到jQuery preventDefault运行标签的onclick功能的问题。这是我的例子:Avoid page jump on # click

$("#main a").bind("click", function (e) { 
    e.preventDefault();
}); 

我认为preventDefault会停止默认事件(href ="#")。但它会让" onclick"事件stil fire。如果我将函数放在我的函数中,它就可以了。但我想在链接上有不同的onclick功能。

1 个答案:

答案 0 :(得分:2)

正如adeneo和Jeremy所提到的,不要使用内联事件处理程序。它们会干扰你的jQuery事件处理程序。

只需将两个功能合并为一个,就可以了:

$("#main a").bind("click", function (e) { 
    e.preventDefault();

    var p = $(this).position();
    $("#loader").css("top", p.top - 20);
    $("#loader").toggle();
});

JSFiddle


  

如果我将函数放在我的函数中,它就可以了。但我想在链接上有不同的onclick功能。

如果你想在不同的链接上使用不同的onclick函数,那么使用类(或ID)并使用jQuery适当地选择它们。

HTML:

<div id="main">
    <p><a class="doSomething" href="#">I will NOT JUMP!</a></p>
    <p><a class="doSomethingElse" href="#">I will NOT JUMP</a></p>
</div>

jQuery的:

$("#main a.doSomething").bind("click", function (e) { 
    e.preventDefault();

    var p = $(this).position();
    $("#loader").css("top", p.top - 20);
    $("#loader").toggle();
});

$("#main a.doSomethingElse").bind("click", function (e) { 
    e.preventDefault();

    //Other code
});

JSFiddle demo