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