0

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

问题:当我尝试从 div 的子元素中提取所有属性data-title时,我得到了错误。这样做的正确方法应该是什么?#collection$.each()Uncaught TypeError: Object 0 has no method 'data'

JS代码

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

​</p>

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

4

5 回答 5

3

这将起作用。

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

$.each( $('#collection').children(), function() {
    $('#result').append( $(this).data('title') );
});
于 2012-12-21T06:42:14.063 回答
2
$('#collection').children().each( function(index, child) {
    $('#result').append( $(child).data('title') );
});

each() 中的第二个参数是原生 DOM 元素,而第一个参数是循环的索引。当迭代一组 jQuery 元素时,您还可以将每个元素用作链式函数,并且this还可以引用循环内的元素。

于 2012-12-21T06:40:50.327 回答
1

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

$.each( $('#collection').children(), function(index, child) {
    $('#result').append( $(child).data('title') );
});
于 2012-12-21T06:39:29.930 回答
0

试试这个,

$.each( $('#collection').children(), function(index, child) {
  $('#result').append( child.data('title') );
});
于 2012-12-21T06:54:00.393 回答
0

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

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

检查小提琴:http: //jsfiddle.net/J5Fjf/4/

于 2012-12-21T07:29:00.593 回答