javascript - 单击 li 时无法选中复选框

标签 javascript jquery html checkbox

我正在尝试通过单击 li 来选中复选框。问题是,只有当有人点击 label 时才会选中复选框,而不是完整的 li (这是因为 li 的宽度比标签长!

<ul>
  <li><input id="a1" type="checkbox"><label for="a1">1</label></li>
  <li><input id="a2" type="checkbox"><label for="a2">2</label></li>
  <li><input id="a3" type="checkbox"><label for="a3">3</label></li>
</ul>

我已经尝试使用下面的 Javascript 解决这个问题,但是它仍然只在单击 label 时检查复选框。

$("li").click(function(e) {
  var checked = !$(this).children("input").first().prop("checked");
  $(this).children("input").first().prop("checked", checked);
  $(this).toggleClass("selected", checked);
});

注意:如果可能,我想避免使用 Javascript 和 Jquery。

最佳答案

您不需要脚本。您可以用 label 包裹复选框和所有 li 内容。给标签 display:block,这样它将占据 li 的整个宽度。这样,li 将是可点击的(就像,不是真的)

label {
  display:block;  
}
<ul>
  <li><label for="a1"><input id="a1" type="checkbox">1</label></li>
  <li><label for="a2"><input id="a2" type="checkbox">2</label></li>
  <li><label for="a3"><input id="a3" type="checkbox">3</label></li>
</ul>

关于javascript - 单击 li 时无法选中复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36996999/

相关文章:

javascript - Angular JS : Update a directive when the value changes

javascript - 如何在动态创建的按钮值中插入 <br>?

javascript - 使用 javascript 读取文本框用户输入并插入超链接

html - 如何在页眉中央添加 Logo ?

javascript - 如何使用不同的值多次加载相同的 html

javascript - 获取事件内部发送的信息(event.data)JQuery/Websocket

javascript - 如何在 React 中加载外部 js 文件?

javascript - 关于 php/javascript 中的日期选择器

javascript - Bootstrap,向下滚动后使导航栏变粘?

javascript - Opentip hide() 不起作用