单击包含的
我有一些像这样的 html:
<ul class="myclass">
<li><input type="checkbox"/>some text</li>
<li><input type="checkbox"/>some text</li>
<li><input type="checkbox"/>some text</li>
</ul>
我希望通过单击复选框或
我尝试了以下jquery:
$('ul.myclass li').click(
功能() {
var cb = $(this).find(":checkbox")[0];
if (!$(cb).attr("已检查")) {
$(cb).attr("已检查", "已检查");
} 别的 {
$(cb).removeAttr("选中");
}
}
);
当我单击文本时效果很好。但是,现在复选框本身实际上不起作用。它似乎正在撤消单击复选框的行为。
如何防止这种情况发生?
I have some html like:
<ul class="myclass">
<li><input type="checkbox"/>some text</li>
<li><input type="checkbox"/>some text</li>
<li><input type="checkbox"/>some text</li>
</ul>
I want the checkboxes to be toggled either by clicking the checkboxes, or any part of the
I tried the following jquery:
$('ul.myclass li').click(
function() {
var cb = $(this).find(":checkbox")[0];
if (!$(cb).attr("checked")) {
$(cb).attr("checked", "checked");
} else {
$(cb).removeAttr("checked");
}
}
);
Which works fine for when I click the text. But, now the checkboxes themselves dont actually work. It appears to be undoing the act of clicking on the checkbox.
How do I prevent this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您可以通过添加以下内容来修复它:
基本上,问题是当您单击复选框时,它会被选中,但随后父
li
的单击事件会触发取消选中它。上面的代码阻止li
的事件触发。You can fix it by adding this:
basically the problem is that when you click on the checkbox, it is checked, but then the parent
li
's click event fires unchecking it. The code above prevents theli
's event from firing.他是我的版本,使用 jQuery 1.6 中的新 .prop api
http://jsfiddle.net/7w82S/1/
He's my version using the new .prop api from jQuery 1.6
http://jsfiddle.net/7w82S/1/
您还可以使用此代码
单击 li 元素时,会选择子输入元素,并将其检查值设置为 true。
您可以通过检查已检查属性的值来检查和取消检查。
you could also use this code
On clicking the li element the child input element is selected and it's checked value is set to true.
You can check and uncheck by checking the value of the checked attribute.