如何在禁用复选框上检测.click()

Lil*_*man 10 javascript jquery

JS/jQuery的:

$('input[type=checkbox]').click(function(){
  // Does not fire if I click a <input type="checkbox" disabled="disabled" />
});
Run Code Online (Sandbox Code Playgroud)

当有人点击禁用的复选框时,如何在jQuery中发生一些事情?

Nop*_*ope 12

再次阅读关于使用readonlyfrom 的评论JoãoSilva.您可以使用它并将其与click事件中的某些逻辑连接.

使用readonly会为您提供禁用的外观,就像disabled它一样,但它仍然允许您单击它.

像这样使用readonly:

<input type="checkbox" readonly="readonly">?
Run Code Online (Sandbox Code Playgroud)

然后在脚本中取消事件,如果设置了readonly.

$('input[type=checkbox]').click(function() {
    var isReadOnly = $(this).attr("readonly") === undefined ? false : true;

    if (isReadOnly) {
        return false;
    }

    // other code never executed if readonly is true.
});
?
Run Code Online (Sandbox Code Playgroud)

DEMO


iam*_*eed 9

您将无法在所有浏览器中可靠地捕获click事件.最好的办法是在上面放置一个透明元素来捕获点击.

HTML

<div style="display:inline-block; position:relative;">
  <input type="checkbox" disabled="disabled" />
  <div style="position:absolute; left:0; right:0; top:0; bottom:0;"></div>
</div>?
Run Code Online (Sandbox Code Playgroud)

JavaScript的

$(':checkbox:disabled').next().click(function(){
    var checkbox = $(this.prevNode);
    // Does fire now :)
});
Run Code Online (Sandbox Code Playgroud)

注意:这是我改进的这个问题的一个想法.