不要在禁用的复选框上触发JQuery

时间:2013-07-19 14:25:53

标签: javascript jquery html

我有一个带复选框的表单。当用户点击标签时,我有自定义的复选框图标被交换。这样可以正常工作,但我也在表单中禁用了复选框,并且当您单击禁用的单击事件时,我不会触发。我该怎么做?

JQuery的:

$('input[type=checkbox] + label').click(function() {
  $(this).toggleClass('checkbox-pressed');
});

HTML:

<input type="checkbox" id="A"><label for="A">Option 1</label>
<input disabled type="checkbox" id="B"><label for="B">Option 2 - don't trigger JQ</label>

3 个答案:

答案 0 :(得分:6)

使用 :not(:disabled) 仅选择未禁用的复选框。

$('input[type=checkbox]:not(:disabled)').click(function() {
    ...
});

文档: :not() :disabled


您应该使用 .on() 。否则,对于在页面最初加载后变为disabled的复选框(例如,由于某些用户操作),它将不起作用:

$(document).on('click', 'input[type=checkbox]:not(:disabled)', function() {
    ...
});

答案 1 :(得分:3)

您可以像这样使用:enabled选择器:

$(':checkbox:enabled').click(function() {
    // Your code here...
});

答案 2 :(得分:0)

在jQuery

中使用:checked 会更容易

您可以找到更多here