0

在这个 codecademy.com 练习中,我应该使用 each 函数来迭代 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。

4

4 回答 4

2

我想你只需要这个:

$.each($, function(index, value){      
    $('#jQueryAttributes').append($('<li></li>').html(index));
});​

小提琴

该值是实际功能,因此您需要索引

于 2012-09-07T15:21:56.117 回答
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>')); });
于 2012-09-07T15:47:11.173 回答
0
$('#jQueryAttributes').append($('<li></li>').html(value));

如果要为每个项目分配不同的索引,则必须使用从 .each 返回的索引对其进行相应的格式化:

$('#jQueryAttributes').append($('<li id="id_'+ index +'"></li>').html(value));
于 2012-09-07T15:13:24.847 回答
0

来自 jquery 文档http://api.jquery.com/each/

.each() 方法旨在使 DOM 循环结构简洁且不易出错。当被调用时,它会遍历作为 jQuery 对象一部分的 DOM 元素。每次回调运行时,都会传递当前循环迭代,从 0 开始。更重要的是,回调是在当前 DOM 元素的上下文中触发的,因此关键字 this 指的是该元素。

假设我们在页面上有一个简单的无序列表:

<ul>
    <li>foo</li>
    <li>bar</li>
</ul>

我们可以选择列表项并遍历它们:

$('li').each(function(index) {
    alert(index + ': ' + $(this).text());
});

因此,列表中的每个项目都会收到一条消息:

0: 富 1: 酒吧

我们可以通过返回 false 从回调函数中停止循环。

于 2012-09-07T15:15:31.987 回答