jQuery统计动态添加item元素数量异常:为何$('#item').length始终返回1?
问题原因与解决方法
问题原因
- HTML规范明确规定,
id是页面元素的唯一标识,同一个页面内不允许存在多个拥有相同id的元素。 - jQuery 的
$('#item')选择器只会匹配页面中第一个带有该id的元素,所以无论你动态添加多少个相同id的div,length始终返回 1。
正确获取元素数量的方法
推荐方案(符合HTML规范)
- 修改动态模板:将每个待添加的
div的id="item"改为class="item"。 - 使用类选择器统计数量:
var num = $('.item').length; alert(num);
不推荐的临时方案(违反规范)
如果因特殊需求必须保留 id="item",可以用属性选择器匹配所有对应元素,但这种写法不符合HTML标准,可能引发其他逻辑或兼容性问题:
var num = $('[id="item"]').length; alert(num);
内容的提问来源于stack exchange,提问作者Kelvin
相关产品推荐
相关产品推荐

