Javascript jQuery可以';不要将onmousedown应用于锚定标签

Javascript jQuery可以';不要将onmousedown应用于锚定标签,javascript,jquery,anchor,onmousedown,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> <

我有一个这样的导航菜单

<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>
我的问题是,如果我将事件处理程序内联,那么脚本可以工作,并且不会出现任何问题

<li> <a href="#" id="firstLink" onmousedown="doSomething()"> Link 1 </a> </li>
  • 另一方面,如果我使用外部文件,如上所示,什么也不会发生,Chrome会返回
    未捕获的TypeError:Object[Object Object]在mousedown上没有方法
    ,Firefox和Firebug会返回我
    $(“#firstLink”)。onmousedown不是一个函数
    。我不明白,我做错了什么

    $('#firstLink').onmousedown(doSomething());
    
    应该是

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

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

    $('#firstLink').onmousedown(function(e){
    
    e.preventDefault();
    
    
    // do something
    
    }); 
    
    文件


    但您可能希望使用´。单击()´,而不是鼠标向下。

    这是鼠标向下,而不是鼠标向下

    $(document).ready(function() {
    $('#firstLink').mousedown(doSomething());
    [ ... ]
    });
    
    您还可以使用“on”事件处理程序。从jQuery1.7开始,这是正确的连接方式 事件-它替换bind()、delegate()和live()


    谢谢你,我快疯了!!如果
    doSomething()
    接受参数怎么办?是否允许在调用函数时传递它们,或者我需要写下:
    $('#firstLink').mousedown(function(){doSomething(par1,par2);})@hourted85,你需要把它写下来,链接你的例子。
    
    $(document).ready(function() {
    $('#firstLink').mousedown(doSomething());
    [ ... ]
    });
    
    $(document).ready(function() {
     $('#firstLink').on("mousedown", doSomething());
    });