2012-01-11 3 views
-1

Следующий код добавляет тот же идентификатор для каждого сНу собрата:JQuery - добавить различные идентификаторы к следующему собрату

var d = 0; 
var newid = currentId.substring(currentId.length-8, currentId.length-1)+d; 

$.each(('table').next(), function() { 
    $('table').find('div[id|="edid"]').attr("id", newid); 
    d++; 
}); 

HTML-структура выглядит следующим образом:

<table><tr><td><div id="edid-0-">text</div></td></tr></table> 
<br> 
<table><tr><td><div id="edid-0-">text</div></td></tr></table> 
<br> 
<table><tr><td><div id="edid-0-">text</div></td></tr></table> 

После запуска моего кода, Идентификаторы должны выглядеть так: edid-0-0, edid-0-1, edid-0-2 и т. Д.

Но вместо этого, все либо edid-0-0, edid-0-0, did-0-0 ... или edid-0-3, edid-0-3, edid-0-3 ...

в зависимости от того, где я поставил переменные (или за пределами каждой функции).

Я пробовал различные варианты, но это всегда один и тот же идентификатор, и не продолжающаяся нумерация. Я понимаю, почему это происходит, но я не знаю, как решить эту проблему. Сидеть здесь часами. Моя голова -> взрывается.

+0

APLY NewID всегда перед добавлением в каждой функции – noob

+0

Почему вы делаете это на стороне клиента? –

+0

В чем Ваш вопрос, точно? – dgvid

ответ

2

Поскольку d всегда 0, то почему бы вам не просто использовать параметр индекса в function()

Кроме того, вы делаете $("table") во время каждой итерации, которая будет снова запрашивать dom. Я предполагаю, что вы на самом деле хотите $(this), который будет найти <div/> под текущим <table/>

var newid = currentId.substring(currentId.length-8, currentId.length-1)+d; 
$.each($('table').next(), function(index, elm) { 
    $(this).find('div[id|="edid"]').attr("id", newid + index); 
}); 
+0

Вот оно! Огромное спасибо. – user1126272

0

Вы устанавливаете значение «новый» (которое никогда не изменяется), но вы увеличиваете «d».

0

SIMPLE: перемещение

var newid = currentId.substring(currentId.length-8, currentId.length-1)+d; 

внутри S.each функции обратного вызова, чтобы переопределить строку идентификатора на каждой итерации. Кроме того, действительно ли он добавляет идентификатор в следующую таблицу? Мне кажется, что код должен был добавить идентификаторы к '
' s.

0

Вы должны поставить это:

var newid = currentId.substring(currentId.length-8, currentId.length-1)+d; 

в вашем каждый

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