用jQuery获取"onclick"的值?

Mik*_*cic 28 javascript jquery javascript-events

是否可以通过jQuery获取A标签的onClick属性的当前值?

例如,我有:

<a href="http://www.google.com" id="google" onclick="alert('hello')">Click</a>
Run Code Online (Sandbox Code Playgroud)

我想得到onclick代码,以便我可以存储它供以后使用(因为我将稍微更改onclick事件).

有可能做这样的事情:

var link_click = $("#google").onclick;
Run Code Online (Sandbox Code Playgroud)

要么:

var link_click = $("#google").click;
Run Code Online (Sandbox Code Playgroud)

所以,稍后在我的代码中,我可以重新应用该代码,或者必要时使用eval()它?

mko*_*yak 48

我从来没有这样做过,但它会这样做:

var script = $('#google').attr("onclick")
Run Code Online (Sandbox Code Playgroud)


jrh*_*ath 13

mkoryak 是正确的.

但是,如果使用更现代的方法(不使用onclick)将事件绑定到该DOM节点,则此方法将失败.

如果这是你真正想要的,请查看这个问题及其接受的答案.

干杯!


我又读了你的问题.
我想告诉你:不要使用onclick,onkeypress喜欢绑定事件.

使用更好的方法addEventListener()可以使您:

  1. 向特定事件添加多个事件处理程序
  2. 有选择地删除一些听众

而不是实际使用addEventListener(),你可以使用jQuery包装器$('selector').click().

再次干杯!


小智 12

这适合我

 var link_click = $('#google').get(0).attributes.onclick.nodeValue;
 console.log(link_click);
Run Code Online (Sandbox Code Playgroud)


Ale*_*hev 11

$('#google').attr('onclick') + ""
Run Code Online (Sandbox Code Playgroud)

但是,Firebug显示这会返回一个函数'onclick'.您可以稍后使用以下方法调用该函数:

(new Function ($('#google').attr('onclick') + ';onclick();'))()
Run Code Online (Sandbox Code Playgroud)

...或使用RegEx剥离function并仅获取其中的语句.