用jQuery获取“onclick”的值?

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

例如,我有:

Click 

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

是否可以做以下事情:

 var link_click = $("#google").onclick; 

要么:

 var link_click = $("#google").click; 

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

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

 var script = $('#google').attr("onclick") 

mkoryak是对的。

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

如果这是您真正想要的,请查看此问题及其接受的答案。

干杯!


我又读了你的问题。
我想告诉你:不要使用onclickonkeypress和喜欢绑定事件。

使用更好的方法(如addEventListener()将使您能够:

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

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

再次干杯!

这对我有用

  var link_click = $('#google').get(0).attributes.onclick.nodeValue; console.log(link_click); 
 $('#google').attr('onclick') + "" 

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

 (new Function ($('#google').attr('onclick') + ';onclick();'))() 

…或使用RegEx去除function并仅获取其中的语句。

我不太确定如何在jQuery中执行此操作…但这有效:

 var x = document.getElementById('google').attributes; for (var i in x) { if (x[i].name == "onclick") alert(x[i].firstChild.data); } 

但是像Harshath说的那样,如果你使用事件监听器会更好,因为删除这个函数并将其添加回onclick事件可能会很麻烦。

你能解释一下你到底想要完成什么吗? 通常,您不必从HTML元素中获取onclick属性。 此外,您不应该在元素本身上指定onclick。 而是使用JQuery动态设置onclick。

但据我了解,您尝试在两个不同的onclickfunction之间切换。 更好的方法是以一种可以处理这两种情况的方式实现你的onclickfunction。

 $("#google").click(function() { if (situation) { // ... } else { // ... } });