为什么Jquery中的parent()
方法在以下情况下不起作用?
$('.class')[0].parent();
错误:Uncaught TypeError: undefined is not a function
但如果我使用:
$('.class').parent();
它有效并且给了我所有元素的父母class
。我知道如何在jQuery中使用它,但问题是为什么浏览器将它解释为JavaScript代码而不是像我在使用[0]
时的jQuery代码。
答案 0 :(得分:3)
因为$('.class')[0]
正在访问jQuery object中的DOM元素。
Native DOM elements没有jQuery方法,为什么您收到错误。
您可以使用.eq()
method按索引访问它:
$('.class').eq(0).parent();
或者,您可以使用$('.class')[0]
包装DOM元素$()
以将其转换为jQuery对象:
$($('.class')[0]).parent();
(尽管使用.eq()
方法。)
答案 1 :(得分:1)
.parent()
方法适用于jQuery对象。您的问题是,您尝试将其用于不是jQuery对象的内容。
当您使用[ ]
表示法从jQuery对象获取元素时,您将获得原始DOM元素节点引用。那些没有parent()
方法。
您可以使用.eq()
jQuery方法将所涉及的元素集限制为匹配的第一个元素,或者只将:first
添加到选择器:
$('.class:first').parent();
答案 2 :(得分:1)
console.log($('.class').first().parent().html());
//or
console.log($('.class').eq(0).parent().html());
console.log($('.class').eq(1).parent().html());

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="parent1">
<div class="class">
1
</div>
</div>
<div class="parent2">
<div class="class">
2
</div>
</div>
&#13;