我遇到jQuery preventDefault运行标签的onclick功能的问题。这是我的例子:Avoid page jump on # click
$("#main a").bind("click", function (e) {
e.preventDefault();
});
我认为preventDefault会停止默认事件(href ="#")。但它会让" onclick"事件stil fire。如果我将函数放在我的函数中,它就可以了。但我想在链接上有不同的onclick功能。
答案 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();
});
如果我将函数放在我的函数中,它就可以了。但我想在链接上有不同的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
});