未选中JQuery toggleClass()复选框

时间:2015-05-20 07:28:07

标签: javascript jquery html css checkbox

您好请检查以下代码 -

HTML

<div class="manage-user-freind" style="line-height:18px; cursor:pointer;">
  <span style="color:blue;">
    <img src="'+pageUrl+'/img/user-16x16.png" height="14" style="float:left; padding-top:2px;" /><input class="chk" type="checkbox" value="10" />pieter
  </span>
</div>

<div class="manage-user-freind" style="line-height:18px; cursor:pointer;">
  <span style="color:blue;">
    <img src="'+pageUrl+'/img/user-16x16.png" height="14" style="float:left; padding-top:2px;" /><input class="chk" type="checkbox" value="12" />john
  </span>
</div>

JQuery的

$('.manage-user-freind').click(function(){
     $(this).toggleClass('clicked',function(){
            $('.chk').prop('checked', true);
     });
});

CSS

.clicked {
  background-color: yellow;
}

我使用过toggleClass()函数。 toggleClass工作正常,但点击的所有复选框也未取消选中当前复选框。

我需要当我点击任何div时首先显示div为黄色并选中当前复选框。再次单击该黄色颜色div将删除,并且复选框将取消选中。

感谢。

对不起我的英文措辞。 :(

4 个答案:

答案 0 :(得分:5)

试试这个:

$('.manage-user-freind').on('click', function() {
    $(this).toggleClass('clicked').find('.chk').prop('checked', $(this).hasClass('clicked'));
});

演示:https://jsfiddle.net/tusharj/d84z5vub/1/

答案 1 :(得分:4)

$.toggleClass没有回调函数。它不是异步函数,因此您可以将$('.chk').prop('checked', true);移动到切换类的下一个语句:

$(this).toggleClass('clicked');
$('.chk').prop('checked', true);

答案 2 :(得分:2)

要检查和取消选中,此代码应该有效:

$('.manage-user-freind').click(function(){
     $(this).toggleClass('clicked');
     var checkbox = $(this).find('.chk');
     checkbox.prop('checked', !checkbox.prop("checked"));
});

这是Fiddle.

答案 3 :(得分:0)

根据这个:jquery function on toggleClass complete?

您可以使用前提等待课程改变

$(this).toggleClass('clicked').promise().done(function(){
    alert('a');
});