2013-07-11 2 views
1

У меня возникли проблемы с заменой определенной части идентификатора для всех элементов моей страницы с определенным классом. Идентификаторы динамически генерируются при загрузке страницы (поступают из базы данных), поэтому я не могу жестко кодировать значения, которые мне нужно заменить.Замена части идентификатора

К примеру, у меня будет что-то вроде этого:

<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> 

И я хочу, чтобы заменить все «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); 
}); 

(«Данные» происходит от АЯКСА вызова, я делаю, что направляет в эту функцию)

Спасибо за всю помощь и жалкого о неясности вопроса

+3

Что вы хотите, чтобы заменить их ? – moonwave99

+0

Покажите код, который у вас есть. –

+0

простой логикой было бы извлечение полного html-кода в тело как текст с использованием '.text()' в переменной. а затем замените specfic word новым словом, используя '.replace (from, to)'. – dreamweiver

ответ

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); 
    }) 
}) 
+0

Я закончил тем, что немного использовал несколько разных ответов, но этот помог мне больше всего. Я отредактировал вопрос с моим решением – J215D

2

Вы можете использовать attr/prop «s функция обратного вызова и replace метод:

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

http://jsfiddle.net/PZ9vB/

+0

Каждый ID # динамически генерируется, поэтому я не могу кодировать 123. Это та часть, с которой у меня проблемы. Должен был добавить, что мой плохой – J215D

0

Без четкого определения проблемы, вы можете заменить числовую часть идентификатора с этим регулярным выражением:

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

Это заменит 123 с foo (заменить все, что вы хотите, чтобы заменить его с). Это работает до тех пор, пока префиксная часть также не содержит чисел. Если это так, то вам нужно немного креативнее.

Смежные вопросы