jQuery:每个函数

时间:2012-09-07 15:11:53

标签: jquery

在这个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。

4 个答案:

答案 0 :(得分:2)

我猜你需要这个:

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

fiddle

该值是实际函数,因此您需要索引

答案 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)

来自jquery docs 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:foo 1:酒吧

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