2

私はこのようなナビゲーションメニューを持っています

<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

4 に答える 4

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

する必要があります

$('#firstLink').mousedown(doSomething);
于 2011-08-01T14:23:26.553 に答える
1

onmousedown ではなく、mousedown です。

$(document).ready(function() {
$('#firstLink').mousedown(doSomething());
[ ... ]
});
于 2011-08-01T14:25:39.690 に答える
0

次のようにすることで、デフォルトのイベントを防ぐことができます。

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

e.preventDefault();


// do something

}); 

ここにドキュメント

ただし、マウスダウンの代わりに「.click()」を使用して調整することをお勧めします。

于 2011-08-01T14:24:52.983 に答える