1

我在尝试用特定类替换页面上所有元素的 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_”、“add_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 调用)

感谢您的所有帮助,并对问题的含糊之处感到抱歉

4

3 回答 3

3

可以使用attr/prop的回调函数和replace方法:

$('#wrapper [id$="123"]').attr('id', function(_, currentID) {
   return currentID.replace('123', '321');
});

http://jsfiddle.net/PZ9vB/

于 2013-07-11T13:32:56.550 回答
0

如果没有更好地定义问题,您可以用这个正则表达式替换 id 的数字部分:

var str = "BUL_123";
str.replace(/\d+/,"foo");

这将替换123foo(替换您想要替换的任何内容)。只要前缀部分也不包含数字,这就会起作用。如果是这种情况,那么你需要多一点创意。

于 2013-07-11T13:34:55.063 回答
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);
  })
}) 
于 2013-07-11T13:44:54.493 回答