Поздний ответ, но, используя jQuery, я, вероятно, сделал бы это примерно так:
$("input:radio[name=radioBtn]").attr('id',function(index,id){
$(this).prev()[0].htmlFor += index;
return id += index;
});
Меньше кода и, вероятно, лучшая производительность.
Для объяснения .attr()
может принять функцию для значения, которое вы устанавливаете.Его возвращаемое значение будет новым значением атрибута.
В функции первый параметр - это индекс текущего элемента в итерации, второй параметр - текущее значение устанавливаемого атрибута (id
в данном случае).
Таким образом, тело функции выглядит следующим образом:
$(this).prev()
Получите предыдущий элемент, используя jQuery's .prev()
. [0]
Извлечь элемент DOM из объекта jQuery. (<label>
) - Установите для свойства
htmlFor
метки значение +=
текущего индекса. - Возвращение текущего идентификатора
+=
текущего индекса.