删除未选中的广播中的课程

时间:2014-07-27 18:59:59

标签: javascript jquery html class radio-button

所以我有这段代码

<ul id="id_priori">
    <li>
        <label for="id_priori_0">
            <input id="id_priori_0" name="priori" type="radio">Hola
        </label>
    </li>
</ul>

这段代码

$("#id_tipo").on('click', 'li', function () {
    var self = $(this),
        radio = self.find(":radio")[0];

    radio.checked = !radio.checked;

    self.toggleClass('on', radio.checked);

})
    .find(":radio").each(function () {
    $(this).closest('li').toggleClass('on', this.checked);
});

我想要的是取消所有未检查无线电的标签,不知道吗?

3 个答案:

答案 0 :(得分:1)

$(":radio:not(checked)").each(function () {
    $(this).closest('li').removeClass('on');
});

无论如何,假设所有无线电都已连接,并且始终只检查了一个,整个代码可能更简单:

$("#id_priori").on('click', 'li', function () {
    $(this).find(':radio').prop('checked', true);
    $(this).addClass('on').siblings().removeClass('on');
});

看看这个Fiddle。我们可以从这一点开始工作

答案 1 :(得分:0)

假设您的意思是删除每个<label>中的所有课程,请将其添加到find

 .find(":radio").each(function () {
    if( !this.checked){
       $(this).parent('label').removeAttr('class');
    }
    $(this).closest('li').toggleClass('on', this.checked);
});

答案 2 :(得分:0)

如果你想删除类,请使用@littleLouito Code 否则,如果你想切换尝试这个

   $(":radio:not(checked)").each(function () {
      $(this).closest('label').toggleClass("on", this.checked);
    });