根据W3C规范,具有2个具有相同ID的元素不是有效的html。
当您的CSS选择器只有一个ID选择器(并且未在特定上下文中使用)时,jQuery使用本机document.getElementById
方法,该方法仅返回具有该ID的第一个元素。
但是,在其他两个实例中,jQuery依赖于Sizzle选择器引擎(或querySelectorAll
,如果有的话),显然选择了两个元素。结果可能因浏览器而异。
但是,在同一页面上绝对不能有两个具有相同ID的元素。如果您的CSS需要它,请改用一个类。
如果绝对必须通过重复的ID选择,请使用属性选择器:
$('[id="a"]');
看看小提琴:http ://jsfiddle.net/P2j3f/2/
如果可能,您应该使用标签选择器来限定该选择器,如下所示:
$('span[id="a"]');