addClass(" test")给出错误:TypeError:undefined不是函数

时间:2014-04-22 19:45:58

标签: javascript jquery

在控制台中我有:

$(".myCssClass")[0].parentNode
<li><span class="myCssClass">some text</span></li>

我想为标记span

添加父<li>的css类

我试过这样:

$(".myCssClass")[0].parentNode.addClass("test")
TypeError: undefined is not a function

我使用Jquery 1.5.2

2 个答案:

答案 0 :(得分:24)

addClass是一个jQuery对象的方法。当你使用$(".myCssClass")[0]时,你有真正的元素,而不是jQuery包装器。

然后,你可以:

  • 再次将其包装到jQuery对象中:

    $($(".myCssClass")[0].parentNode).addClass("test")
    
  • 仅适用于jQuery对象:

    $(".myCssClass").eq(0).parent().addClass("test")
    
  • 使用纯JavaScript添加类(旧浏览器不支持):

    $(".myCssClass")[0].parentNode.classList.add("test")
    

答案 1 :(得分:1)

使用.parent()

$(".myCssClass").parent().addClass("test")

.addClass()只能用于jQuery选择器。

替代解决方案 (不建议通过上面提到的解决方案,但为了完成)

$(".myCssClass")[0].parentNode不是jQuery对象,要转换成需要用$()包裹的那个

$($(".myCssClass")[0].parentNode) // jQuery选择器

现在addClass()$($(".myCssClass")[0].parentNode).addClass("test")