我有一个脚本会在点击span
的{{1}}时检查复选框。我的问题是li
的宽度比li
长,因此span
的一部分不会选中复选框。
li
$('ul.myclass li span').click( function() {
var $cb = $(this).parent().find(":checkbox");
if (!$cb.prop("checked")) {
$cb.prop("checked", true);
} else {
$cb.prop("checked", false);
}
});
.myclass li span {
margin-left: 5px;
}
li {
background: red;
}
JsFiddle:http://jsfiddle.net/7w82S/89/
答案 0 :(得分:5)
使用相应的HTML <label>
元素将文本与<input>
:
<ul class="myclass">
<li><label><input type="checkbox"><span>some text</span></label></li>
<li><label><input type="checkbox"><span>some text</span></label></li>
<li><label><input type="checkbox"><span>some text</span></label></li>
</ul>
使用display: block;
(对于<label>
元素的样式)来填充其祖先<li>
,并且所需的行为是自动的,不需要JavaScript。
答案 1 :(得分:0)
如果我得到了正确的问题,你可以这样做
$('ul.myclass li').click( function() {
var $cb = $(this).find(":checkbox");
if (!$cb.prop("checked")) {
$cb.prop("checked", true);
} else {
$cb.prop("checked", false);
}
});