2017-06-05 90 views
2

我在学习jQuery,当使用:eq()选择器时,我得到这个'undefined'错误。下面是HTML::eq()选择器返回undefined

<!DOCTYPE html> 
<html> 
<head> 
    <title>:eq() selector example</title> 
</head> 
<body> 
    <div> 
     <button>Button #1</button> 
     <button>Button #2</button> 
     <button>Button #3</button> 
     <button>Button #4</button> 
     <button>Button #5</button> 
     <button>Button #6</button> 
    </div> 

    <script src="jquery-2.1.4.min.js"></script> 
    <script src="script.js"></script> 
</body> 
</html> 

和脚本:

var myButton = $('button:eq(5)'); 
console.log(myButton.textContent); 

当我使用var myButton = $('button')[5];一切都很好,虽然。

+0

需要使用'文本()'有 –

+3

':当量()'和'.EQ()'都得到jQuery对象,而'[]'产生DOM节点。在你的例子中,'button:eq(5)'不返回undefined,它返回没有'textContent'的东西。 –

回答

2

$('button:eq(5)')返回jQuery对象使用text(),而不是获取该元素的文字:

var myButton = $('button:eq(5)'); 
console.log(myButton.text()); 

$('button')[5];返回DOM对象就是为什么你可以在上面访问属性textContent

var myButton = $('button')[5]; 
console.log(myButton.textContent); 

希望这有助于。

+0

谢谢。我还没有开始使用jQuery方法:)是使用'$('button')[5];'一个很好的练习? –

+0

不客气,如果你不想使用jquery会更好,那么最好使用'document.querySelectorAll('button')[5]'来代替DOM对象。 –

0

用jquery对象text()。选择器$('button:eq(5)');返回一个jquery对象。而textContent是一个Dom对象。是不可接受的。

var myButton = $('button:eq(5)'); 
 
console.log(myButton.text());
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div> 
 
    <button>Button #1</button> 
 
    <button>Button #2</button> 
 
    <button>Button #3</button> 
 
    <button>Button #4</button> 
 
    <button>Button #5</button> 
 
    <button>Button #6</button> 
 
</div>

OR

如果您需要两者的结合尝试这样不具有textContent属性,因此你应该

$('button:eq(5)')[0].textContent 
0

$('button')[5]返回具有textContent属性的DOM元素的引用,因此它起作用。

但是$('button:eq(5)')是一个jQuery对象,它没有属性,因此undefined被返回。

使用.text()功能与jQuery对象。

var text = $('button:eq(5)').text()