jquery 如果复选框被选中,则将类添加到父元素

brjng4g3  于 5个月前  发布在  jQuery
关注(0)|答案(5)|浏览(66)

我有一个带有复选框的表,如下所示:

<td class="table-col" >
  <div class="group-one" >
    <input type="checkbox"  />
  </div>
</td>

字符串
我想做的是,当复选框被选中时,将一个“selected”类应用于“table-col”。

if ($('.table-col').find(':checked')) {
    $(this).parent().parent().addClass('selected');
}


我看了很多类似的解决方案,但似乎对我不起作用。我不知道为什么,但 this 指向的是HTMLDocument而不是元素。
(编辑)在这个页面上会有标记的复选框,那些我想应用“选择”.在评论@cimmanon提到事件处理.我需要看看这个.也谢谢你的答案!
(编辑)

<td class="table-col">
<div class="group-one">
    <input type="checkbox" checked="checked"/>
</div>
</td>


所以在页面加载之后,会有标记的框(我认为它们总是包含 checked=“checked” --不确定)复选框。这些是需要新样式的框。不需要点击它们并应用样式的交互,但仍然很酷。

py49o6xq

py49o6xq1#

试试这个...

$(":checkbox").on('click', function(){
     $(this).parent().toggleClass("checked");
});

字符串
Example
你好啊。

eyh26e7m

eyh26e7m2#

您可以使用.change()绑定到change事件;然后使用.closest().toggleClass()在祖元素中添加或删除selected类名。

$("input:checkbox").change(function(){
  $(this).closest(".table-col").toggleClass('selected', this.checked);
});

字符串
See it here.

fv2wmkja

fv2wmkja3#

给予你的复选框一个名字,这样jQuery就可以钩住它:

$('input[name=foo]').is(':checked')

字符串

new9mtju

new9mtju4#

$(this)只会引用你的复选框(这样你就可以根据你的代码找到它的祖父级),当你在一个事件处理程序中时,通过将它分配给复选框元素来调用它,就像@cimmanon暗示的那样。
因此,如果你将.change()处理程序分配给你的复选框,$(this)将引用你的复选框。实际上你可以在一行中这样做,因为你可能想打开或关闭“selected”类:

$(":checkbox").change(function () {
    $(this).parent().parent().toggleClass('selected');
         });

字符串
否则,$(this)引用引发事件的控件例如,如果您正在执行此代码以响应按钮单击处理程序,则$(this)将引用按钮。

rkue9o1l

rkue9o1l5#

超文本标记语言:

<div class="parent">
   <div class="child1">
       <input type="checkbox"/>
   </div>
   <div class="child2">TARGET</div>
<div>

字符串
CSS:

.parent:has(input:checked)
{
  //CSS FOR .parent, WHEN CHECKBOX CHECKED
}
.parent:has(input:checked) .child2
{
  //CSS FOR TARGET, WHEN CHECKBOX CHECKED
}

相关问题