JQuery:查找和替换属性值

时间:2012-01-04 15:35:13

标签: 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是一个包含整个块的变量,count包含最新的计数器值。 但是,当我调试此代码时,似乎“this.name”未定义。

我在哪里错了?

由于

4 个答案:

答案 0 :(得分:26)

要更新元素的属性,您应该使用.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\]'));
}); 

答案 1 :(得分:7)

试试这个: 假设行属性名称为“filterCol”,则可以将新值设置为该属性

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

答案 2 :(得分:6)

您应该使用$(this).attr('name')代替this.name

答案 3 :(得分:3)

试试这个:

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