2012-12-21 35 views
0

当我使用$('#1').data('title')来提取属性data-title时,它可以工作。

问题:当我尝试提取所有这一切都是DIV #collection的使用$.each()孩子的元素data-title属性,我得到的错误Uncaught TypeError: Object 0 has no method 'data'。应该怎样才能做到这一点?

JS代码

$.each($('#collection').children(), function(index, child) { 
    $('#result').append(child.data('title')); 
}); 

的jsfiddle:http://jsfiddle.net/J5Fjf/2/

回答

3

这将工作。

$('#result2').html($('#collection #1').data('title')); 

$.each($('#collection').children(), function() { 
    $('#result').append($(this).data('title')); 
}); 
1

第一个参数,如果each()index,使用第二。

$.each($('#collection').children(), function(index, child) { 
    $('#result').append($(child).data('title')); 
}); 
+0

感谢您的接触,我现在得到的错误:'未捕获的TypeError:对象#没有方法'data'http://jsfiddle.net/J5Fjf/2/ – Nyxynyx

+0

您需要jQuery对象来调用数据它但你有DOM对象,将其转换为jQuery对象来调用数据,检查我更新的答案。 – Adil

2
$('#collection').children().each(function(index, child) { 
    $('#result').append($(child).data('title')); 
}); 

在每个第二个参数()将是源DOM元素,而第一个参数是循环的索引。当迭代一组jQuery元素时,您也可以将每个元素用作链接函数,并且this也会引用循环内的元素。

0

试试这个,

$.each($('#collection').children(), function(index, child) { 
    $('#result').append(child.data('title')); 
}); 
0

我认为你必须抓住的div的索引中#collection和替代$.each可以使用.each来遍历:

$('#collection div').each(function(i) { 
    $('#result ul').append('<li>' + $('#a'+parseFloat(i+1)).data('title')+'</li>'); 
}); 

chekout小提琴:http://jsfiddle.net/J5Fjf/4/