jQuery无法将onmousedown应用于锚标签

时间:2011-08-01 14:22:35

标签: javascript jquery anchor onmousedown

我有这样的导航菜单

<ul id="nav">
<li> <a id="firstLink" href="#"> Link 1 </a> </li>
<li> <a id="secondLink" href="#"> Link 2 </a> </li>
<li> <a id="thirdLink" href="#"> Link 3 </a> </li>
<li> <a id="fourthLink" href="#"> Link 4 </a> </li>
</ul>

我想在鼠标停止时将一个函数关联到每个锚标记,所以我有一个外部js文件,我的代码是

$(document).ready(function() {
$('#firstLink').onmousedown(doSomething());
[ ... ]
});

function doSomething() {
// this function does something
}

我的问题是,如果我将事件处理程序内联,脚本可以运行,并且不会出现任何问题。

<li> <a href="#" id="firstLink" onmousedown="doSomething()"> Link 1 </a> </li>

另一方面,如果我使用外部文件,如上所示,没有任何反应,Chrome会回复Uncaught TypeError: Object [object Object] has no method onmousedown,Firefox和Firebug会返回$("#firstLink").onmousedown is not a function。我不明白,我做错了什么?

4 个答案:

答案 0 :(得分:12)

$('#firstLink').onmousedown(doSomething());

应该是

$('#firstLink').mousedown(doSomething);

答案 1 :(得分:1)

它是mousedown而不是mousedown。

$(document).ready(function() {
$('#firstLink').mousedown(doSomething());
[ ... ]
});

答案 2 :(得分:0)

您可以通过执行以下操作来阻止默认事件:

$('#firstLink').onmousedown(function(e){

e.preventDefault();


// do something

}); 

文档here

但你可能想要使用'.click()'来代替mousedown。

答案 3 :(得分:0)

您也可以使用“on”事件处理程序。从Jquery 1.7开始,这是正确的附加方式 一个事件 - 它取代了bind(),delegate()和live()。

$(document).ready(function() {
 $('#firstLink').on("mousedown", doSomething());
});