我在尝试使用特定类替换页面上所有元素的ID的特定部分时遇到问题。当页面加载时(来自数据库)动态生成id,因此我无法对需要替换的值进行硬编码。
例如,我会有这样的事情:
<div id="BUL_123" class="commentary_list_item newItem">
<span id="commentary_list_text_123" class="removableItem newItem">
<img id="added_cancelIcon_123" class="cancelIcon newItem" src="delete_icon.gif">
</span>
</div>
我想用其他ID替换所有“123”,但保留“BUL_”,“commentary_list_text_”,“added_cancelIcon_”部分。
我可以通过分割功能获得123值,但我不确定如何在我的页面上替换它们。
任何帮助将不胜感激。谢谢!
解决方案:
function ReplaceIDNumber(data, id) {
jQuery('.newItem').each(function() {
var id = jQuery(this).attr('id');
var id_split = el_id.split('_');
newID = id.replace(id_split[id_split.length - 1], data);
jQuery(this).attr('id', newID);
});
(“数据”来自我制作的指向此函数的ajax调用)
感谢所有帮助,并对问题含糊不清感到抱歉
答案 0 :(得分:2)
您可以使用attr
/ prop
的回调函数和replace
方法:
$('#wrapper [id$="123"]').attr('id', function(_, currentID) {
return currentID.replace('123', '321');
});
答案 1 :(得分:0)
如果没有更好的问题定义,你可以用这个正则表达式替换id的数字部分:
var str = "BUL_123";
str.replace(/\d+/,"foo");
这会将123
替换为foo
(替换您要替换的任何内容)。只要前缀部分不包含数字,这就可以工作。如果是这种情况,那么你需要更有创意。
答案 2 :(得分:0)
一些好的答案,但他们都假设 - 所以更多的信息会有所帮助。我假设:(1)最后一部分(由“_”分隔)是需要替换的部分(2)最后一部分并不总是123
$(document).ready(function() {
// all id
var $allIds = $('[id]');
var $this;
var id;
var idArray;
var idArrayLength;
var newId;
$allIds.each(function() {
$this = $(this);
id = $this.attr('id');
idArray = id.split("_");
idArrayLength = idArray.length;
newId = id.replace(idArray[idArrayLength-1], "abc");
$this.attr('id', newId);
})
})