Подтвердить что ты не робот

JQuery: поиск и замена значений атрибутов

Мне трудно выполнить поиск и замену значений атрибутов.

Рассмотрим этот html:

<tr id="rules[0]">
    <td>
        <input id="rules0.isActive1" name="rules[0].isActive" type="checkbox" value="true"/><input type="hidden" name="_rules[0].isActive" value="on"/>
    </td>
    <td>
        <select id="rules0.leftCondition.name" name="rules[0].leftCondition.name">
            ...
        </select>
    </td>

Я хочу обновить каждый атрибут имени соответствующим подсчетом, например. правила [0].isActive обновляется до правил [10].isActive

Я использую этот фрагмент JQuery:

$(newRow).find('[id*="rules"]').each(function(){
    // Update the 'rules[0]' part of the name attribute to contain the latest count 
    this.name.replace('rules\[0\]','rules\[$count\]');
}); 

где newRow - переменная, содержащая весь блок, и счетчик содержит последнее значение счетчика. Однако, когда я отлаживаю этот код, кажется, что "this.name" undefined.

Где я здесь не так?

Спасибо

4b9b3361

Ответ 1

Чтобы обновить атрибут элемента, вы должны использовать функцию .attr. Кроме того, при использовании этого в контексте jQuery вы должны использовать синтаксис $(this). Если я понимаю ваши намерения, значит, это должно быть примерно так:

$(newRow).find('[id*="rules"]').each(function(){
    // Update the 'rules[0]' part of the name attribute to contain the latest count 
    $(this).attr('name',$(this).attr('name').replace('rules\[0\]','rules\[$count\]'));
}); 

Ответ 2

Вы должны использовать $(this).attr('name') вместо this.name.

Ответ 3

попробуйте следующее: Предположим, что имя атрибута строки является "filterCol", тогда вы можете установить новое значение для этого атрибута

$("#trId").attr("filterCol", newValue);

Ответ 4

Попробуйте следующее:

$(this).attr('name', $(this).attr('name').replace('rules\[0\]','rules\[$count\]'));