是否可以通过jQuery获取A标签的onClick属性的当前值?
例如,我有:
<a href="http://www.google.com" id="google" onclick="alert('hello')">Click</a>
我想获取onclick代码,以便我可以存储它以供以后使用(因为我将稍微更改onclick事件)。
是否可以执行以下操作:
var link_click = $("#google").onclick;
或:
var link_click = $("#google").click;
所以,稍后在我的代码中,我可以重新应用该代码,或者在必要时使用eval()吗?
答案 0 :(得分:44)
我从未这样做过,但会这样做:
var script = $('#google').attr("onclick")
答案 1 :(得分:13)
mkoryak
是正确的。
但是,如果使用更现代的方法(不使用onclick
)将事件绑定到该DOM节点,则此方法将失败。
如果这是您真正想要的,请查看this question及其接受的答案。
干杯!
我再次阅读你的问题
我想告诉你:不要使用onclick
,onkeypress
等来绑定事件。
使用addEventListener()
等更好的方法可以让您:
您可以使用addEventListener()
之类的jQuery
包装,而不是实际使用$('selector').click()
。
再次干杯!
答案 2 :(得分:12)
这对我有用
var link_click = $('#google').get(0).attributes.onclick.nodeValue;
console.log(link_click);
答案 3 :(得分:11)
$('#google').attr('onclick') + ""
然而,Firebug显示这会返回一个函数'onclick'。您可以稍后使用以下方法调用该函数:
(new Function ($('#google').attr('onclick') + ';onclick();'))()
...或使用RegEx剥离function
并仅获取其中的语句。
答案 4 :(得分:4)
我不太确定如何在jQuery中执行此操作...但这可行:
var x = document.getElementById('google').attributes;
for (var i in x) {
if (x[i].name == "onclick") alert(x[i].firstChild.data);
}
但是像Harshath说的那样,如果你使用事件监听器会更好,因为删除并将这个函数添加回onclick事件可能会很麻烦。
答案 5 :(得分:0)
你能解释一下你到底想要完成什么吗?通常,您不必从HTML元素中获取onclick属性。此外,您不应该在元素本身上指定onclick。而是使用JQuery动态设置onclick。
但据我了解,您尝试在两个不同的onclick功能之间切换。更好的方法是以能够处理这两种情况的方式实现你的onclick功能。
$("#google").click(function() {
if (situation) {
// ...
} else {
// ...
}
});