JQuery:查找和替换属性值

JJ1*_*180 23 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>
Run Code Online (Sandbox Code Playgroud)

我希望用适当的计数更新每个名称属性,例如规则[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\]');
}); 
Run Code Online (Sandbox Code Playgroud)

其中newRow是一个包含整个块的变量,count包含最新的计数器值.但是,当我调试此代码时,似乎"this.name"未定义.

我在哪里错了?

谢谢

kaz*_*kaz 29

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


小智 9

试试这个:假设行属性名称是'filterCol',那么你可以将新值设置为该属性

$("#trId").attr("filterCol", newValue);
Run Code Online (Sandbox Code Playgroud)


Eri*_*edo 6

你应该使用$(this).attr('name')而不是this.name.