我正在使用“替换”功能删除div中的所有非数字值。
似乎Jquery替换仅影响第一个元素。
这是我的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
答案 0 :(得分:30)
你有重复的id,这是无效的,jQuery ID选择器(或者内部jQuery使用的任何其他id选择器,如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>
顺便提一句,你的身份是这样的: -
<a id="comment1" href="#"> c2fđf011. </a>
<a id="comment2" href="#">c20ff113. </a>
<a id="comment3" href="#"> c201gf76341. </a>
使用属性选择器启动将帮助您(但从字面上减慢速度,因为这是一个属性选择器并失去使用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, ''));
});
道德:ID必须是唯一的
答案 1 :(得分:17)
HTML页面中的ID应该是唯一的
这就是它仅针对找到的元素的第一个实例的原因。
将元素替换为,而不是
$('.comment').each(function() {
// Your code
});
答案 2 :(得分:8)
$('.comment').each(function() { var thz = $(this); var repl = thz.html(thz.html().replace(/\D+/g, '')); });
将标识为comment
的ur元素替换为类comment
。
如果在元素上多次使用ID,则选择器将仅选择具有该ID的第一个元素。
但是当你使用类时,选择器将选择具有该类的所有元素。
答案 3 :(得分:4)
如果你真的不想改变html,可以使用属性选择器。但正如其他人所说,使用class而不是id是最好的选择。
$('div[id="comment"]').each(function(){})