【问题标题】:calling a function before onclick script在 onclick 脚本之前调用函数
【发布时间】:2014-11-19 01:02:33
【问题描述】:
<a href="#" onclick="foo()">click me </a>

你好,我需要在点击时调用onclick脚本之前调用一个函数。

我试过了:

    var script = $("a").attr("onclick");
    $("a").attr("onclick", "");

    $("a").click(function(event) {
       // call bar() first, then foo();
       bar();
       // script is a string on Chrome
       // foo() may use this, so can not globalEval.
    });

如何调用脚本?我可以将 onclick 作为 jQuery 函数吗?这样:

 onclickFunction.call(this);

谢谢。

【问题讨论】:

    标签: javascript jquery onclick handler


    【解决方案1】:

    如果你必须遵循这种方式,试试这个:

    JS:

    (function() {
        var a = document.getElementsByTagName('a')[0];
        var foo = a.onclick;
    
        function bar() { console.log('bar'); } 
    
        a.onclick = function() {
            bar(); 
            foo();
        };
    })();
    

    jsfiddle

    【讨论】:

    【解决方案2】:

    你不能把它们包装在像这样的另一个函数中吗? :

    <a href="#" onclick="handler();">click me </a>
    
    var handler = function() {
       foo(); // 1. calling foo first
       bar(); // 2. calling bar second
    };
    

    【讨论】:

      【解决方案3】:

      您可以为元素添加“鼠标上移”或“鼠标下移”事件,该事件将在“点击”事件调用之前调用。这是演示。

      void function(){
        $("div").mousedown(function(){
        console.log("mouse down event") 
        })
        $("div").mouseup(function(){
        console.log("mouse up event") 
        })
        $("div").click(function(){
        console.log("click event") 
        })
      }();
      <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
      
      <div>click me</div>

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多