0

我有一个函数,只要从特定组中单击复选框,就会调用该函数。我试图在选中复选框时向输入的父包装器添加一个类,然后在未选中时删除该类。我的问题是,我似乎无法让 parentNode 和 classList 一起工作。

例如。此代码有效:

$(this.parentNode).css( "border", "3px solid red" );

但是这段代码返回一个未定义的错误

alert($(this.parentNode).classList

对于上下文,这就是我最终要达到的目标:

    if ($(this.parentNode.parentNode).find('.form-type-checkbox').classList.contains("chkbox-checked")) {
      $(this.parentNode.parentNode).find('.form-type-checkbox').removeClass("chkbox-checked");
    } else {
      $(this.parentNode).addClass("chkbox-checked");
    }
4

3 回答 3

1

$(this.parentNode)是一个 jQuery 对象,就像classList纯 JS 属性一样,这不适用于 jQuery 引用的对象。

尝试使用 jQuery 的.attr()

$(this.parentNode).attr('class');
于 2020-04-09T12:43:44.503 回答
1

不要盲目地使用 jQuery。this.parentNode.classList将被定义,因为它没有包含在 jQuery 中,因为在 jQueryclassList中不存在。

于 2020-04-09T12:44:52.193 回答
1

我认为最简单的解决方案可能就像您应该使用 jQuery 的 toogleClass() 一样。请参考以下代码。

$("#id_of_radioButton").click(function(){
  $("#id_of_parentNode").toggleClass("classname");
});
于 2020-04-09T13:05:54.653 回答