取消绑定"所有选择器"在jquery

时间:2014-06-01 09:53:02

标签: jquery selector bind unbind

我怎样才能解除"所有选择器"?

的解除绑定

我尝试$("*").unbind();但是jquery也解除了$('#demo').click(function())};的绑定。


HTML

<div id="hv_t"></div>

<br /><br /><br />
<hr />
<br /><br /><br />

<div id="demo">Demo</div>

<br /><br /><br />

<div id="unbindHover">unbindHover</div>

<小时/> 的 JS

$('#demo').click(function()
{
    alert('click');
});

$('#unbindHover').click(function()
{
    alert('unbind hover');
    $("*").unbind();
});

$("*").hover( function (e) 
{ 
   $('#hv_t').append('+');

}, function ()
{
   $('#hv_t').append('-');             
});

DEMO http://jsfiddle.net/K4zQA/

3 个答案:

答案 0 :(得分:2)

要从所有选择器中删除元素#demo,您可以使用.not()选择器:

$("*").not('#demo').unbind();

<强> Working Demo

答案 1 :(得分:1)

要取消绑定特定事件绑定,请在unbind方法中指定事件和处理程序。 hover方法是绑定mouseentermouseleave事件的快捷方式,因此它是您需要解除绑定的方法:

$("*").hover(handleEnter, handleLeave);

function handleEnter() {
  $('#hv_t').append('+');
}

function handleLeave() {
  $('#hv_t').append('-');
}

$('#unbindHover').click(function() {
  $("*").unbind('mouseenter', handleEnter).unbind('mouseleave', handleLeave);
});

答案 2 :(得分:0)

另一种选择是使用':not(...)'选择器。

$("*:not(#demo)").unbind();

Example

还有另一个称为事件命名空间的功能,但这会将您的“悬停”调用分离为“mouseenter”和“mouseleave”的单独绑定调用。 unbind文档包含有关使用事件命名空间的信息。

使用其中一个“非”选项似乎是您最好的选择。