Javascript jQuery,从类触发事件
请看一下下面的代码和提琴 代码 小提琴:Javascript jQuery,从类触发事件,javascript,jquery,events,Javascript,Jquery,Events,请看一下下面的代码和提琴 代码 小提琴: 我基本上是试图在按下按钮时在元素上切换“clickEnabled”类。切换在边框更改时起作用,但是clickEnabled类不响应单击事件设置事件处理程序时没有。clickEnabled元素。您仍然可以捕获单击事件,不过: $(document).on("click", ".clickEnabled", function(){ alert("Hello, world!"); }); 更改: $(".clickEnabled").click(f
我基本上是试图在按下按钮时在元素上切换“clickEnabled”类。切换在边框更改时起作用,但是clickEnabled类不响应单击事件设置事件处理程序时没有
。clickEnabled
元素。您仍然可以捕获单击事件,不过:
$(document).on("click", ".clickEnabled", function(){
alert("Hello, world!");
});
更改:
$(".clickEnabled").click(function (e) {
alert('clicked');
});
致:
正如@araxanas提到的,.clickEnabled
在加载时不存在。因此,我将选择器切换到。clickable
,它可以。但是,您只希望在启用单击时处理它们。这就是为什么我添加了条件。仅当单击的元素具有clickEnabled
类时,它才会发出警报
此外,它可能有助于将css移出javascript,这样您可以直观地看到类是否存在,请参阅我的更新。问题是,在加载页面时,单击事件处理程序不绑定任何元素(因为没有类为“clickEnabled”的元素) 解决方案是将.click()方法更改为.live()方法:
这不是因为每次单击文档都会遍历dom树,所以效率低下吗?您不必这样做。请参阅我的答案以获取替代方案。
live
在jQuery>1.7中不推荐使用。我喜欢您的答案,因为它效率高,但在绑定和解除绑定事件时,它无法与我的代码一起使用。
$(".clickEnabled").click(function (e) {
alert('clicked');
});
$(".clickable").click(function (e) {
if ( $(this).hasClass("clickEnabled") )
{
alert('clicked');
}
});
$(".clickEnabled").live('click', function (e) {
alert('clicked');
});