Jquery 禁用DOM的所有事件

Jquery 禁用DOM的所有事件,jquery,Jquery,我正试图找到一种简单的方法来禁用DOM元素的所有jQuery事件处理程序,如悬停,单击,等等。我知道我可以使用解除绑定来做到这一点。但要做到这一点,它需要大量的代码。我只是想知道是否有jQuery的任何开关可以控制这一点?另外,我知道有一个解决方案使用全局变量来实现它。我认为这样写硬代码是不好的 //in some event handler if (sometag) { //do something. } 对于代码来说,它并不优雅。有什么我不知道的想法吗 如果您只谈论您自己的处理程序

我正试图找到一种简单的方法来禁用DOM元素的所有jQuery事件处理程序,如
悬停
单击
,等等。我知道我可以使用
解除绑定
来做到这一点。但要做到这一点,它需要大量的代码。我只是想知道是否有jQuery的任何开关可以控制这一点?另外,我知道有一个解决方案使用全局变量来实现它。我认为这样写硬代码是不好的

//in some event handler
if (sometag)
{
   //do something.

}

对于代码来说,它并不优雅。有什么我不知道的想法吗

如果您只谈论您自己的处理程序,并且您希望为它们设置一个全局“开/关”开关,那么让处理程序测试一个中心变量是一个完全合理的方法,不是坏的或不雅观的。(实际上,我不会将其设置为全局变量,而是所有处理程序都可以访问的变量。)

或者,您可以为事件命名名称空间:

$("some selector").bind("click.myevents", handler);
$("some selector").bind("hover.myevents", handler);
// ...
…并使用名称空间来解除绑定它们:

$("*").unbind(".myevents");

…但是没有简单的方法可以再次打开它们,而且这样做的开销似乎有点高。

如果您只是在谈论您自己的处理程序,并且您希望为它们设置一个全局“开/关”开关,那么让处理程序测试一个中心变量是一种完全合理的方法,既不坏也不雅观。(实际上,我不会将其设置为全局变量,而是所有处理程序都可以访问的变量。)

或者,您可以为事件命名名称空间:

$("some selector").bind("click.myevents", handler);
$("some selector").bind("hover.myevents", handler);
// ...
…并使用名称空间来解除绑定它们:

$("*").unbind(".myevents");

…但是没有简单的方法可以再次打开它们,而且这样做的开销似乎有点高。

如果您真的想解除所有事件处理程序的绑定,您只需使用
.off()
,无需任何参数:

$('p').off();
作为另一种选择,您可以使用名称空间事件,这将允许您解除名称空间的所有处理程序的绑定:

$('p').on('click.ns', handler).on('mouseover.ns', handler2).on('mouseout.otherns', handler3);
$('p').off('.ns'); //only the first two handlers are unbound

如果确实要解除所有事件处理程序的绑定,则只需使用
.off()
,无需任何参数:

$('p').off();
作为另一种选择,您可以使用名称空间事件,这将允许您解除名称空间的所有处理程序的绑定:

$('p').on('click.ns', handler).on('mouseover.ns', handler2).on('mouseout.otherns', handler3);
$('p').off('.ns'); //only the first two handlers are unbound

你的问题很宽泛。如果你能陈述你的确切用例,有人可能会给你一个更好的答案

在dom节点上激活/停用事件处理程序的另一种模式是将事件处理委托给父节点,并使用类来打开和关闭处理程序

什么是活动授权?你会找到一个简单的答案

以下是一个例子:

//HTML code :

<ul id="myList">
    <li>
        <input class="cbActivate" type="checkbox" /> <a href="#" class="link">first item</a>
    </li>
    <li>
        <input class="cbActivate" type="checkbox" /> <a href="#" class="link">second item</a>
    </li>
    <li>
        <input class="cbActivate" type="checkbox" /> <a href="#" class="link">third item</a>
    </li>
</ul>

//javascript
$('.cbActivate').on('click', function () {
    $(this).closest('li').find('a.link').toggleClass('active');
});
// handling clicks on 'a.active' links is delegated to the parent '#myList' node
$('#myList').on('click', 'a.active', function () {
    alert("I'm an activated item !");
});
//HTML代码:
//javascript $('.cbActivate')。在('click',函数(){ $(this).closest('li').find('a.link').toggleClass('active'); }); //处理“a.active”链接上的点击被委托给父节点“#myList”节点 $('#myList')。在('click','a.active',函数(){ 警报(“我是激活的物品!”); });

这是相应的

你的问题相当广泛和笼统。如果你能陈述你的确切用例,有人可能会给你一个更好的答案

在dom节点上激活/停用事件处理程序的另一种模式是将事件处理委托给父节点,并使用类来打开和关闭处理程序

什么是活动授权?你会找到一个简单的答案

以下是一个例子:

//HTML code :

<ul id="myList">
    <li>
        <input class="cbActivate" type="checkbox" /> <a href="#" class="link">first item</a>
    </li>
    <li>
        <input class="cbActivate" type="checkbox" /> <a href="#" class="link">second item</a>
    </li>
    <li>
        <input class="cbActivate" type="checkbox" /> <a href="#" class="link">third item</a>
    </li>
</ul>

//javascript
$('.cbActivate').on('click', function () {
    $(this).closest('li').find('a.link').toggleClass('active');
});
// handling clicks on 'a.active' links is delegated to the parent '#myList' node
$('#myList').on('click', 'a.active', function () {
    alert("I'm an activated item !");
});
//HTML代码:
//javascript $('.cbActivate')。在('click',函数(){ $(this).closest('li').find('a.link').toggleClass('active'); }); //处理“a.active”链接上的点击被委托给父节点“#myList”节点 $('#myList')。在('click','a.active',函数(){ 警报(“我是激活的物品!”); });

这是相应的

嗨,我在那里找到了这篇关于预防措施的文章:from:嗨,朋友,我需要时间来阅读和理解它。谢谢。嗨,我在那里找到了这篇关于预防措施的文章:from:嗨,朋友,我需要时间来阅读和理解它。谢谢。是的,是的,让他们回去工作会很困难。谢谢。是的,是的,这将是一项艰巨的工作,让他们再次工作。谢谢。原谅我的语言能力差,我发现你的解决方案看起来非常优雅。谢谢但是我这里还有一个问题,
on
是否可以处理future元素?谢谢。是的:如果您将元素添加为
#myList
的子元素,并且它们与筛选器匹配,则将应用处理程序。请原谅我的语言技能不好,我发现您的解决方案看起来非常优雅。谢谢但是我这里还有一个问题,
on
是否可以处理future元素?谢谢。是:如果您将元素添加为
#myList
的子元素,并且它们与筛选器匹配,则将应用处理程序。