Javascript 在onclick脚本之前调用函数

Javascript 在onclick脚本之前调用函数,javascript,jquery,onclick,handler,Javascript,Jquery,Onclick,Handler,如何调用脚本?我可以得到onclick作为jQuery函数吗?以便: 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

如何调用脚本?我可以得到onclick作为jQuery函数吗?以便:

    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.
    });

谢谢。

您不能将它们包装到另一个类似这样的函数中吗

 onclickFunction.call(this);

var handler=function(){
foo();//1.首先调用foo
bar();//2.第二次调用bar
};

如果必须遵循此方法,请尝试以下方法:

JS:

<a href="#" onclick="handler();">click me </a>

var handler = function() {
   foo(); // 1. calling foo first
   bar(); // 2. calling bar second
};

您可以将“鼠标向上”或“鼠标向下”事件添加到元素中,此事件将在“单击”事件调用之前调用。这是演示

void函数(){
$(“div”).mousedown(函数(){
console.log(“鼠标按下事件”)
})
$(“div”).mouseup(函数(){
console.log(“鼠标移动事件”)
})
$(“div”)。单击(函数(){
console.log(“单击事件”)
})
}();


单击我
谢谢。如何使用jQuery实现这一点$(“a”)。未定义onclick$attr(“onclick”)返回一个字符串,而不是一个函数。如果foo()不访问this.xxxx,则它会工作。函数foo(id){console.log('foo'+id);}。未定义id。在本例中,“this”是对窗口对象的引用,因此您正在尝试访问window.id。这是对的引用。如果我在没有a.onclick覆盖的情况下单击,它会工作。在jQuery中,它可以调用这样传递参数的函数,例如afunton.call(jQueryObjectAshis)
<a href="#" onclick="handler();">click me </a>

var handler = function() {
   foo(); // 1. calling foo first
   bar(); // 2. calling bar second
};
(function() {
    var a = document.getElementsByTagName('a')[0];
    var foo = a.onclick;

    function bar() { console.log('bar'); } 

    a.onclick = function() {
        bar(); 
        foo();
    };
})();