删除与元素关联的事件

时间:2013-04-02 08:47:28

标签: jquery mouseevent

我有5个img标签,如。

<img id="test-btn" src="image/btn1.png" onmouseover="this.src='image/btn2.png'" onmousedown="this.src='image/btn1.png'" onmouseup="this.src='image/btn2.png'" onmouseout="this.src='image/btn1.png'" onclick="uponClickingTestBtn()" style="heignt:15px;width:30px;">

当我点击其中一个图片标签时,应禁用其他图像标签。我甚至不希望像onmouseover这样的事件发生在图像上。是否可以删除与元素关联的事件?我试过了

$('#test-btn').filter("input,textarea,select,button").prop('disabled',true);

$('#test-btn :input').attr('disabled', true);

但没有奏效。我该怎么做?我还想稍后启用这些img点击。

2 个答案:

答案 0 :(得分:1)

与您的代码保持一致,您可以这样做:

$('#test-btn :input').attr('onmousedown', null);
$('#test-btn :input').attr('onmouseover', null);
$('#test-btn :input').attr('onclick', null);
$('#test-btn :input').attr('onmouseout', null);
$('#test-btn :input').attr('onmouseup', null);

然而,考虑不要放入内联事件,并使用jquery .on()女巫有一个函数off()来删除事件。

如果你仍然使用fisrt解决方案,你可以重新分配这样的事件:

$('#test-btn :input').attr('onmouseover', "this.src='image/btn2.png'");
...

答案 1 :(得分:0)

NULL函数绑定,它不再对点击做任何事情。确保我也为元素中的属性添加了删除。

var button = document.getElementById('test-btn');
button.onmouseover = null;
button.removeAttribute('onmouseover');

在jQuery中,您可以preventDefault或返回false。有时人们同时使用。如果你想在点击内部仍然执行操作,请记住最后返回false,否则该功能将“中止”;

$('#test-btn').click(function(evt) {
    evt.preventDefault();

    return false;
});