在这个codecademy.com练习中,我应该使用每个函数迭代jQuery变量,使用id jQueryAttributes将每个键添加到列表中。我写了下面的每个函数,但它不正确。我不确定如何使用jQueryAttributes将其添加到id。 Html在
之下var jQuery = $;
//iterate over jQuery, adding every key
//to the list with id jQueryAttributes
$.each(jQuery, function(index, value){
$('#'+index).append($('<li></li>').html(value));
});
HTML
<div id="left">
<h1>$ methods and attributes</h1>
<ul id='jQueryAttributes'>
</ul>
</div>
更新
有一件事我忘了提及。我应该使用函数的索引为每个列表项分配不同的id。
答案 0 :(得分:2)
我猜你需要这个:
$.each($, function(index, value){
$('#jQueryAttributes').append($('<li></li>').html(index));
});
该值是实际函数,因此您需要索引
答案 1 :(得分:1)
从我所看到的,你遇到了两个问题。首先是你正在尝试使用
$('#'+index)
连接到尚未添加到DOM的元素。您可以通过添加
来执行CoolStraw建议的操作来分配ID.attr('id',index)
最后设置要插入的元素的ID。
第二个问题是你试图将jQuery对象的值作为字符串插入而不强制它们。当我在这里讨论时,只有非功能和非对象值结果出现在结果中。而不是
jQuery('<li></li>').html(value)
使用
jQuery('<li></li>').html(''+value)
或
jQuery('<li>'+value+'</li>')
所以其中任何一个都可行:
$.each(jQuery,function(index,value){ $('#jQueryAttributes').append(jQuery('<li></li>').html('' + value).attr('id',index)); });
在使用jQuery创建元素之前将其构建为字符串:
$.each(jQuery,function(index,value){ jQuery('#jQueryAttributes').append(jQuery('<li id="' + index + '">' + value +' </li>')); });
答案 2 :(得分:0)
$('#jQueryAttributes').append($('<li></li>').html(value));
如果你想为每个项目分配不同的索引,你必须使用从.each获得的索引来相应地格式化它:
$('#jQueryAttributes').append($('<li id="id_'+ index +'"></li>').html(value));
答案 3 :(得分:0)
.each()方法旨在使DOM循环结构简洁且不易出错。调用时,它会迭代属于jQuery对象的DOM元素。每次回调运行时,都会从0开始传递当前循环迭代。更重要的是,回调是在当前DOM元素的上下文中触发的,因此关键字this指的是元素。
假设我们在页面上有一个简单的无序列表:
<ul>
<li>foo</li>
<li>bar</li>
</ul>
我们可以选择列表项并迭代它们:
$('li').each(function(index) {
alert(index + ': ' + $(this).text());
});
因此,列表中的每个项目都会收到一条消息:
0:foo 1:酒吧
我们可以通过返回false来停止回调函数中的循环。