为什么JQuery只影响第一个div元素?
我正在使用“replace”function删除一个div中的所有非数字值。
看来Jqueryreplace只影响第一个元素。
这里是我的JQuery:
$('#comment').each(function() { var thz = $(this); var repl = thz.html(thz.html().replace(/\D+/g, '')); });
HTML代码:
<a id="comment1" href="#"> c2fđf011. </a> <a id="comment1" href="#"> c20ff113. </a> <a id="comment1" href="#"> c201gf76341. </a>
结果:
2011年c20ff113。 c201gf76341。
我想要的结果是:
2011 20113 20176341
你有重复的id,这是无效的,也是jQuery IDselect器(或任何其他IDselect器,如内部jQuery使用的document.getElementById,因为带有ID的元素由大多数浏览器索引,并意味着是唯一的)将只返回第一个出现在DOM中。 改变它到课堂上,看看它的工作:
$('.comment').each(function() { var thz = $(this); var repl = thz.html(thz.html().replace(/\D+/g, '')); });
HTML
<a class="comment1" href="#"> c2fđf011. </a> <a class="comment1" href="#">c20ff113. </a> <a class="comment1" href="#"> c201gf76341. </a>
顺便说一下你的id是这样的:
<a id="comment1" href="#"> c2fđf011. </a> <a id="comment2" href="#">c20ff113. </a> <a id="comment3" href="#"> c201gf76341. </a>
从属性select器开始将帮助你(但是,从字面上来看,这会降低你的速度,因为这是一个属性select器,失去了使用ID的好处)。
$('[id^=comment]').each(function() { // While using this better give a container context $('[id^=comment]', 'container').each(function... var thz = $(this); var repl = thz.html(thz.html().replace(/\D+/g, '')); });
演示
道德:身份证必须是唯一的
在HTML页面中的ID应该是唯一的
这就是它只针对find的元素的第一个实例的原因。
用类代替元素
$('.comment').each(function() { // Your code });
$('.comment').each(function() { var thz = $(this); var repl = thz.html(thz.html().replace(/\D+/g, '')); });
将id comment
replace为一个类comment
。
如果您在元素上多次使用ID,则select器将仅select具有该ID的第一个元素。
但是当你使用类时,select器将会select所有具有该类的元素。
如果你真的不想改变HTML,你可以使用select器的属性。 但正如其他人所build议的,使用class而不是id是这里最好的select。
$('div[id="comment"]').each(function(){})