jQuery preventDefault() 停止 onclick 工作

jQuery preventDefault() stops onclick from working

我有一个问题 jQuery preventDefault from 运行 标签的 onclick 函数。这是我的例子:Avoid page jump on # click

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

我认为 preventDefault 会停止默认事件 (href="#")。但它会让 "onclick" 事件继续发生。如果我将函数放在我的函数中,它就可以工作。但是我想在链接上有不同的点击功能。

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

只需将这 2 个函数合并为一个,即可运行:

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

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

JSFiddle


If I put the function inside my function it works. But I want to have different onclick functions on the links.

如果你想在不同的链接上有不同的点击功能,然后使用 类(或 ID)和 select 它们适当地与 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