使用$ .each()获取数据属性

时间:2012-12-21 06:38:36

标签: javascript jquery html css html5

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

问题:当我尝试使用data-title从div #collection的子元素中提取所有$.each()属性时,出现错误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/

5 个答案:

答案 0 :(得分:3)

这样可行。

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

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

答案 1 :(得分:2)

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

each()中的第二个参数是本机DOM元素,而第一个参数是循环的索引。在迭代jQuery元素集时,您也可以将每个元素用作链式函数,this也可以引用循环内的元素。

答案 2 :(得分:1)

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

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

答案 3 :(得分:0)

试试这个,

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

答案 4 :(得分:0)

我认为你必须抓住#collection内的div的索引,而不是$.each,你可以使用.each来迭代:

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

告诉小提琴: http://jsfiddle.net/J5Fjf/4/