当我使用$('#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/
答案 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/