jquery每个都不循环遍历所有元素?

时间:2012-08-12 09:44:31

标签: jquery

编辑:这段代码工作正常,忽略了div被堆叠在彼此之上,被视觉反馈所欺骗:(对不起。

我一直在搜索stackOverflow上的每个问题并阅读jquery文档但是我无法找出为什么这个片段只在其中一个div中放置“bar”。我在这里错过了什么?所有例子似乎都是这样的:

<div class="foo"></div>
<div class="foo"></div>

$(".foo").each(
  function() {
    $(this).append("bar");
  }
);

我选择所有foo类元素,用每个迭代它们,在每个函数中这是当前元素吗?似乎不是......我做错了什么?

我也尝试过:

function(index, element) {$(element)等同样的结果。

2 个答案:

答案 0 :(得分:6)

你需要提供一个带索引和元素参数的函数,这将允许你迭代jQuery选择的对象。

只有在文档准备就绪后才能执行此操作,因此请确保已准备就绪,或准备就绪

 <div class="foo"></div>
 <div class="foo"></div>

<script type="text/javascript">
$(document).ready(function(){

    $(".foo").each(function(index, element) {
        $(element).append("bar");
      }
    );
});
</script>

答案 1 :(得分:1)

如前所述,您的代码和备用简短版本(如问题评论中的pimvdb所述)完全正常。

请参阅DEMO

您很可能遇到代码不在$(document).ready(function(){});中的问题,或者您对jQuery库的引用丢失了。

.ready()中放置代码可确保在脚本执行之前完全加载DOM(图像除外)。