我有一个具有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并不擅长,有人可以提供帮助。 感谢。
答案 0 :(得分:1)
我不确定跨浏览器兼容性,但至少在Chrome中,您可以获得对要调用的函数的引用,删除单击处理程序,然后绑定您自己的:
<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()");
如何发送多个参数