通过单击页面任何位置取消复选框的选中状态,并通过单击其标签来切换复选框的状态。

5
因此,我们有一个与之相关的复选框和标签。 我需要通过单击标签来切换复选框状态,并在单击主体的任何其他位置时取消选择它。 以下代码的问题是复选框无法通过单击标签取消选择。

$(function () {
  "use strict";
  
  function uncheckBox() {
    var isChecked = $("#cbox").prop("checked");
    if (isChecked) {
      $("#cbox").prop("checked", false);
    }
  }
  
  $("body").on("click", function () {
    uncheckBox();
  });
  
  $("#cbox").on("click", function (e) {
    e.stopPropagation();
  });
});
html, body {
  margin: 0;
  padding: 0;
  height: 100%;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<input type="checkbox" id="cbox" value="checkbox"/>
<label for="cbox">testbox</label>

1个回答

6

停止从标签()发生的事件冒泡,代码如下:$("#cbox,label").click

$(function () {
  "use strict";
  
  function uncheckBox() {
    var isChecked = $("#cbox").prop("checked");
    if (isChecked) {
      $("#cbox").prop("checked", false);
    }
  }
  
  $("body").on("click", function () {
    uncheckBox();
  });
  
  $("#cbox,label").on("click", function (e) {
    e.stopPropagation();
  });
});
html, body {
  margin: 0;
  padding: 0;
  height: 100%;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<input type="checkbox" id="cbox" value="checkbox"/>
<label for="cbox">testbox</label>


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接