在链接 onClick 事件之前执行函数

use*_*738 3 javascript jquery

我在无法访问源代码的页面上执行 DOM 操作。我只想阻止执行链接的 onClick 处理程序,添加我自己的无关函数,然后允许原始 onClick 函数正常执行。这是页面代码的示例:

<a href="#" onclick="myAjaxFunction('param1, param2');return false;" name="buyLink" id="buyLink" >Buy Now</a>
Run Code Online (Sandbox Code Playgroud)

我想出了下面的代码框架:

jQuery('#buyLink').click(function(event){
    event.preventDefault();
    my2ndFunction(); // alert(‘I ran’);
    //execute myAjaxFunction() here
});
Run Code Online (Sandbox Code Playgroud)

我有两个挑战:

1) 当我使用 Alert() 代码对此进行测试时,会出现警报,但仍会运行原始函数(preventDefualt 似乎不起作用)。

2)如何调用具有正确动态参数值的原始函数?(也许以某种方式使用“自我”?)

Roc*_*mat 5

首先,备份原始onclick处理程序。然后,将其从元素中移除。最后,创建您自己的处理程序。在您的处理程序中,调用原始函数。

var orig_onclick = $('#buyLink').prop('onclick');
$('#buyLink').removeProp('onclick');

$('#buyLink').click(function(e){
    // Do your own code
    my2ndFunction();

    // Call the original function, with the correct context.
    return orig_onclick.call(this, e.originalEvent);
});
Run Code Online (Sandbox Code Playgroud)

演示:http : //jsfiddle.net/qbz7wn9o/