我有一个复选框:
<td class="checkbox">
<input type="checkbox"
value="100"
id="chkbox_100"
name="chkbox[]"
class="chkbox_selector"
disabled="">
</td>
我有一些jQuery:
$(':checkbox').each(function(){
$(this).dblclick(function(e){
$(this).removeAttr("disabled");
});
});
我的预期行为是,当我双击该框时,已禁用的属性 BUT 已删除。
如果我加载的复选框没有禁用&amp;用$(this).removeAttr("disabled");
替换alert('here');
我得到了预期的功能。
如果我运行 naked $(this).removeAttr("disabled");
页面上的复选框加载没有禁用属性(并且,有趣的是也能够发出“HERE”警报)。
那么,是什么阻止了jQuery将双击事件绑定到禁用的复选框?有没有一种简单的方法来解决这个问题?
答案 0 :(得分:1)
没有什么能阻止jQuery绑定事件。它被禁用会导致事件处理程序无法触发。
如果您分配处理程序,然后删除disabled
属性,处理程序仍然有效。
$(':checkbox').dblclick(function(e){
alert('here');
});
$(':checkbox').removeAttr("disabled");
答案 1 :(得分:1)
解决方案是将input
放在<span>
内并将事件绑定到<span>
。