2016-03-26 18 views
2

我觉得我完全错过了某些东西,但我无法弄清楚是什么。我尝试通过.get()获取通过索引指定的项目的数据属性。不过,我似乎无法做到这一点:从get()中找到的元素获取数据属性

var int = 1, 
 
\t \t selector = $("a"); 
 
    
 
console.log(selector.get(int)); 
 
console.log(selector.get(int).data("banana")); // Uncaught TypeError: selector.get(...).data is not a function 
 
console.log(selector.get(int)[0].data("banana")); // Uncaught TypeError: selector.get(...).data is not a function
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<a href="#" data-banana="5">Hello</a> 
 
<a href="#" data-banana="2">there</a>

缺少什么我在这里?为什么会发生?

回答

1

你必须要在这种情况下使用dataset

console.log(selector.get(int)[0].dataset.banana); 

因为node对象没有一个叫其原型data()方法。这是一个属于jquery对象的函数。

如果你想在这种情况下使用jQuery到一起旅行,那么你必须使用.eq()

console.log(selector.eq(0).data("banana")); 

基本上.get(1)将提取的第二个元素是从jQuery集合节点对象,而.eq(1)会得到你的第二个元素作为jQuery对象