请看下面的代码和小提琴。
的 CODE 的
$("#enable").click(function(e) {
if (!$("#enable").data('isOn')) {
$("#holder").find('.clickable').each(function(d) {
$(this).css('border', '1px solid red');
$(this).addClass('clickEnabled');
});
$("#enable").data('isOn', true);
} else {
$("#holder").find('.clickable').each(function(d) {
$(this).css('border', '');
$(this).removeClass('clickEnabled');
});
$("#enable").data('isOn', false);
}
});
$(".clickEnabled").click(function(e) {
alert('clicked');
});
小提琴: http://jsfiddle.net/qAuwt/
我基本上试图在按下按钮时在元素上切换“clickEnabled”类。切换正在边界正在改变,但clickEnabled类没有响应点击事件
答案 0 :(得分:2)
设置事件处理程序时没有.clickEnabled
个元素。但您仍然可以捕获click事件:
$(document).on("click", ".clickEnabled", function(){
alert("Hello, world!");
});
答案 1 :(得分:1)
更改:
$(".clickEnabled").click(function (e) {
alert('clicked');
});
要:
$(".clickable").click(function (e) {
if ( $(this).hasClass("clickEnabled") )
{
alert('clicked');
}
});
正如@araxanas所提到的,.clickEnabled
在加载时不存在。所以我将选择器切换到.clickable
,这样做。但是,您只想在启用时处理点击。这就是我添加条件的原因。它仅在被点击的元素具有clickEnabled
类时才会发出警告。
此外,将jss移出javascript可能会有所帮助,这样您可以直观地看到该课程是否存在,请参阅我更新的fiddle。
答案 2 :(得分:-1)
问题是当页面加载时,click事件处理程序不绑定任何元素(因为没有类“clickEnabled”的元素)。
解决方案是将.click()方法更改为.live()方法:
$(".clickEnabled").live('click', function (e) {
alert('clicked');
});