jquery每个元素id

时间:2013-11-19 18:21:54

标签: jquery each

出于某种原因,它只找到一个div而不是找到所有具有该id的div。

JS:

jQuery('#showoffline').click(function(){
    jQuery.each(jQuery('#offlineestreams'),function(){
        jQuery(this).css("display","block");
    });
});

Divs是这样的:

<div id="offlineestreams" style="display = none;">
Something here
</div>
<div id="offlineestreams" style="display = none;">
Something here2
</div>

但只有第一个显示:\为什么会发生这种情况?

5 个答案:

答案 0 :(得分:1)

ID必须是唯一的,您已复制了ID offlinestrams。另一种解决方案是将class添加到您要分组的divs。试试下面的事情,

HTML

<div class="offlineestreams">
    Something here
</div>
<div class="offlineestreams">
    Something here2
</div>

JQUERY

jQuery('#showoffline').click(function(){
     jQuery(".offlinestream").hide();
});

DEMO

答案 1 :(得分:0)

ids必须是唯一的,我很确定jQuery('#offlineestreams')只会返回1个对象。你应该使用课程

答案 2 :(得分:0)

id应该是唯一的。尝试将类添加到您想要的div中,例如:

<div id="offlinestreams1" class="offlinestreams" style="display = none;">
Something here
</div>
<div id="offlinestreams2" class="offlinestreams" style="display = none;">
Something else here
</div>

然后你的脚本可能是:

jQuery('#showoffline').click(function(){
    jQuery.each(jQuery('.offlineestreams'),function(){
        jQuery(this).css("display","block");
    });
});

答案 3 :(得分:0)

由于元素id必须是唯一的,因此此行为未定义且特定于浏览器。有时你可能会得到一个结果,有时甚至全部,甚至有时甚至没有。

使用class代替id,或使id唯一。

<div class="offlineestreams" style="display = none;">
    Something here
</div>
<div class="offlineestreams" style="display = none;">
    Something here2
</div>

和...

jQuery('.offlineestreams') ...

此外,每当您在渲染,DOM元素选择/遍历等方面遇到意外行为时,非常有用的第一步将是validate the markup。如果标记无效,您需要在尝试调试有关该标记的问题之前修复它。

答案 4 :(得分:0)

DOM中的ID应该是唯一的。如果您有多个具有相同ID的元素,我建议将它们更改为类。然后在类上运行您的每个函数。然后你可以按照以下方式执行你的javascript:

$('#showoffline').click(function(){
  $.each($('.offlineestreams'), function(){
    $(this).css({'display': 'block'});
  });
});

同时更新您的HTML:

<div class="offlineestreams" style="display:none;">Something here</div>
<div class="offlineestreams" style="display:none;">Something here</div>