通过jquery添加onclick属性

时间:2013-12-02 21:02:13

标签: jquery

我有一个具有onclick属性的链接,遗憾的是我无法修改。我想做的是在调用onclick函数之前调用并执行另一个函数。经过研究,我发现我无法做到这一点,因为onClick具有第一优先权。

为了达到我想要的目标,我想做的就是这样。使用Jquery删除onclick属性,然后在页面加载后立即添加修改后的onclick属性。

例如:我目前有这个。

<a href="#" class='myclass' onclick="Joomla.submitbutton('article.apply')">link</a>

我想让它看起来像这样

<a href="#" class='myclass' onclick="MyFunction(); Joomla.submitbutton('article.apply')">link</a>

这样,它将在默认函数之前执行myfunction。

我对Jquery并不擅长,有人可以提供帮助。 感谢。

6 个答案:

答案 0 :(得分:1)

我不确定跨浏览器兼容性,但至少在Chrome中,您可以获得对要调用的函数的引用,删除单击处理程序,然后绑定您自己的:

http://jsfiddle.net/guXV3/

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

function clickHandler() {
    console.log('inline handler');
}

$(document).ready(function () {
    $('a').each(function () {
        var originalHandler = $(this)[0].onclick;
        $(this).removeAttr('onclick');
        $(this).on('click', function () {
            console.log('new handler');
            originalHandler();
        });
    });

});

点击此处的链接会记录new handler,然后记录inline handler

答案 1 :(得分:0)

添加处理程序。

$('.myclass').click(function(){
    //your function code goes here.
});

删除以前的处理程序。

$('.myclass').attr('onclick', '');

答案 2 :(得分:0)

检查fiddle以获取完整示例。

$(function(){
   var $some_link = $('#some_link');
   var onClick = $some_link[0].onclick;
   $some_link.unbind('click', onClick);
   $some_link.attr('onclick', null);
   $some_link.on('click', function(e){ myBeforeCall(e); onClick(e); });
});

function myBeforeCall(){
   alert('Before');   
}

答案 3 :(得分:0)

要添加到内联,您可以执行以下操作:

$(function () {
    $('.myclass').attr('onclick', function (i, attr) {        
        return 'MyFunction();' + attr;
    });
})

这会将html更改为您显示的方式,并MyFunction()首先触发

DEMO

答案 4 :(得分:0)

attr()方法设置或返回所选元素的属性和值。

$('.myclass').attr('onclick', "myFunction()");

答案 5 :(得分:0)

@Musa,我想知道,在遵循 jQuery 代码的情况下:

$('.myclass').attr('onclick', "myFunction()");

如何发送多个参数