如何用JQuery删除“onclick”?

时间:2009-11-06 14:01:48

标签: jquery attributes event-handling jquery-events

PHP代码:

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

我想删除onclick="check($id,1),因此无法点击链接或“check($id,1)不会被触发。我怎样才能使用JQuery?

8 个答案:

答案 0 :(得分:212)

旧路(1.7之前):

$("...").attr("onclick", "").unbind("click");

新方式(1.7 +):

$("...").prop("onclick", null).off("click");

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

// use the "[attr=value]" syntax to avoid syntax errors with special characters (like "$")
$('[id="a$id"]').prop('onclick',null).off('click');
<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>

答案 1 :(得分:57)

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

$element.prop("onclick", null);

引用jQuerys official doku

  

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

答案 2 :(得分:16)

如果您使用的是jquery 1.7

$('html').off('click');

否则

$('html').unbind('click');

答案 3 :(得分:14)

删除onclick属性

假设您已将您的点击事件内联添加,如下所示:

<button id="myButton" onclick="alert('test')">Married</button>

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

$("#myButton").prop('onclick', null); // Removes 'onclick' property if found

删除click事件侦听器

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

$("button").on("click", function() { alert("clicked!"); });

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

$("button").click(function() { alert("clicked!"); });

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

$("#myButton").off('click');          // Removes other events if found

同时删除

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

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

答案 4 :(得分:6)

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

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

$(element).attr('onclick','myFunction()');

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

$(element).prop('onclick',null);

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

答案 5 :(得分:6)

使用removeAttr非常容易。

$(element).removeAttr("onclick");

答案 6 :(得分:1)

如果onclick事件不是直接在元素上,而是来自父元素,该怎么办? 这应该有效:

$(".noclick").attr('onclick','').unbind('click');
$(".noclick").click(function(e){
    e.preventDefault();
    e.stopPropagation();
    return false;
});

答案 7 :(得分:0)

如果您通过ID取消绑定onclick事件,请尝试此操作然后使用:

$('#youLinkID').attr('onclick','').unbind('click');

如果您通过Class取消绑定onclick事件,请尝试此操作然后使用:

$('.className').attr('onclick','').unbind('click');