如何用JQuery删除"onclick"?

Ste*_*ven 91 jquery attributes event-handling jquery-events

PHP代码:

<a id="a$id" onclick="check($id,1)" href="javascript:void(0)"  class="black">Qualify</a>
Run Code Online (Sandbox Code Playgroud)

我想删除onclick="check($id,1)所以无法点击链接或" check($id,1)不会被解雇.我怎么能用JQuery做到这一点?

glm*_*ndr 224

旧路(1.7之前):

$("...").attr("onclick", "").unbind("click");
Run Code Online (Sandbox Code Playgroud)

新方式(1.7+):

$("...").prop("onclick", null).off("click");
Run Code Online (Sandbox Code Playgroud)

(用您需要的选择器替换...)

// use the "[attr=value]" syntax to avoid syntax errors with special characters (like "$")
$('[id="a$id"]').prop('onclick',null).off('click');
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>


<a id="a$id" onclick="alert('get rid of this')" href="javascript:void(0)"  class="black">Qualify</a>
Run Code Online (Sandbox Code Playgroud)

  • 不应该是removeAttr('onclick')? (26认同)
  • 使用jQuery 1.7+,您可以使用开/关:http://stackoverflow.com/questions/209029/best-way-to-remove-an-event-handler-in-jquery (6认同)
  • 参见removeAttr http://api.jquery.com/removeattr/`卸下使用.removeAttr()不会实现在因特网所需的效果浏览器6,7或8.为了避免潜在的问题的内联onClick事件处理第一评论,使用.prop()代替` (6认同)
  • @andyface是的,这是在文档中,但我不得不使用`.prop()`for IE11. (2认同)

acm*_*cme 57

我知道这已经很老了,但是当一个迷路的陌生人发现这个问题寻找答案时(就像我一样)那么这是最好的方法,而不是使用removeAttr():

$element.prop("onclick", null);
Run Code Online (Sandbox Code Playgroud)

引用jQuerys官方doku:

"使用.removeAttr()删除内联onclick事件处理程序无法在Internet Explorer 6,7或8中实现所需的效果.为避免潜在问题,请使用.prop()代替"

  • 我不认为这是最好的方式.http://jsfiddle.net/TN2wr/ vs http://jsfiddle.net/TN2wr/1/ (3认同)

Jay*_*dav 17

如果您使用的是jquery 1.7

$('html').off('click');
Run Code Online (Sandbox Code Playgroud)

其他

$('html').unbind('click');
Run Code Online (Sandbox Code Playgroud)


Joh*_*ers 16

删除onclick属性

假设您添加了内联的click事件,如下所示:

<button id="myButton" onclick="alert('test')">Married</button>
Run Code Online (Sandbox Code Playgroud)

然后,您可以删除这样的事件:

$("#myButton").prop('onclick', null); // Removes 'onclick' property if found
Run Code Online (Sandbox Code Playgroud)

删除click事件侦听器

假设您通过定义事件侦听器添加了click事件,如下所示:

$("button").on("click", function() { alert("clicked!"); });
Run Code Online (Sandbox Code Playgroud)

......或者像这样:

$("button").click(function() { alert("clicked!"); });
Run Code Online (Sandbox Code Playgroud)

然后,您可以删除这样的事件:

$("#myButton").off('click');          // Removes other events if found
Run Code Online (Sandbox Code Playgroud)

删除两者

如果您不确定如何添加活动,可以将两者结合使用,如下所示:

$("#myButton").prop('onclick', null)  // Removes 'onclick' property if found
              .off('click');          // Removes other events if found
Run Code Online (Sandbox Code Playgroud)


小智 9

使用removeAttr非常容易.

$(element).removeAttr("onclick");
Run Code Online (Sandbox Code Playgroud)


bbo*_*flo 6

在尝试使用bind,unbind,on,off,click,attr,removeAttr,prop之后我努力工作了.所以,我有以下场景:在我的HTML中我没有附加任何内联onclick处理程序.

然后在我的Javascript中,我使用以下内容添加内联onclick处理程序:

$(element).attr('onclick','myFunction()');
Run Code Online (Sandbox Code Playgroud)

要在以后从Javascript中删除它,我使用以下内容:

$(element).prop('onclick',null);
Run Code Online (Sandbox Code Playgroud)

这是我在Javascript中以动态方式绑定和取消绑定点击事件的方式.切记不要在元素中插入任何内联的onclick处理程序.