在父div中检查复选框

时间:2013-01-27 16:44:30

标签: javascript jquery

我有几个元素复选框,img和父div中的另一个div。单击父div时,将使用某种背景颜色选择所有三个元素。这就是html的外观:

<div class="jfmfs-friend" id="812290706"><input class="friend-checkbox" type="checkbox"><img src="//graph.facebook.com/picture"><div class="friend-name">Test user</div></div>

并在父div选择中我正在检查或取消选中复选框

elem.delegate(".jfmfs-friend", 'click', function(event) {
$(this).find('input').attr('checked', !$(this).find('input').attr('checked'));
});

一切正常。但问题是,当我单击复选框时,它会通过上面的功能并取消选中该复选框。现在取消选中复选框,但选中了整个父div。

如何确保如果单击复选框,我不应该运行此行?

 $(this).find('input').attr('checked', !$(this).find('input').attr('checked'));

1 个答案:

答案 0 :(得分:2)

通过检查事件目标类型或标记名来检查是否单击了复选框或其他元素:

elem.on('click', '.jfmfs-friend', function(e) {
    if (e.target.tagName.toLowerCase() != 'input')
        $(this).find('input') 
               .prop('checked', !$(this).find('input').prop('checked'));
});