如何将jQuery函数应用于具有相同ID的所有元素?

4

我对jQuery还很陌生。我有以下代码:

jQuery(document).ready(function() {
    jQuery('#carousel').jcarousel();
});

这仅适用于第一个id="carousel"ul,而不适用于其他元素。如何将其应用于所有具有相同ID的元素?

HTML:

<!-- jQuery applies to this div -->
<div id="slideshow-carousel">
    <ul id="carousel" class="jcarousel jcarousel-skin-tango">
        <!-- ... -->
    </ul>
</div>

<!-- jQuery does not apply for this div -->
<div id="slideshow-carousel">
    <ul id="carousel" class="jcarousel jcarousel-skin-tango">
        <!-- ... -->
    </ul>
</div>

6
应避免多次使用相同的 ID,而应该使用类(class)来代替,例如:<div class="myClass"></div> 和 $(".myClass")。 - Bruno
在多个控件中使用相同的ID?那是不行的。 - Ravi Y
嘿,欢迎来到SO :) 给他们+1,建议你应该创建一个类而不是id。另外尝试使用jsfiddle,这样我们可以从那里继续并填充空白。 - fedmich
4个回答

9

您不能有多个具有相同Id的元素,这就是为什么它不起作用的原因。您应该使用class="caroussel"

jQuery(document).ready(function() {
    jQuery('.carousel').jcarousel();
});

1
你不能有多个具有相同 Id 的元素,尽管可以实现,但这不符合 HTML 标准 :) - Johny Skovdal

9

元素的ID在DOM中应该是唯一的。两个或多个元素具有相同的ID不是有效的HTML。为了在元素之间共享功能,请给它们分配一个通用类,而不是相同的ID。如果无法分配它们一个通用类,则以下解决方法将允许您选择具有相同id属性的元素:

如果不能更改ID,则可以使用相同的ID (如果不可能更改ID)

jQuery(document).ready(function() {
    jQuery('[id=carousel]').jcarousel();
});

使用通用类(推荐方法)
jQuery(document).ready(function() { 
    jQuery('.carousel').jcarousel();
});

如果您添加解释,即在同一页上多次具有相同ID是无效的HTML,则您在此处拥有最佳答案。 - Johny Skovdal

3

在最近版本的jQuery中,如果页面上有多个id,选择器只会返回在DOM中找到的第一个'id'。应该使用class。


0
在这种情况下,您应该使用类。您不能使用ID。否则,您可以尝试下面的代码。
jQuery('ul').jcarousel();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接