JQuery:查找和替换属性值

JQuery:查找和替换属性值,jquery,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>

我在执行属性值的查找和替换时遇到困难

考虑以下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>
其中newRow是一个保存整个块的变量,count保存最新的计数器值。 然而,当我调试这段代码时,似乎“this.name”是未定义的

我哪里出了问题

谢谢

试试这个:

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

要更新元素的属性,应该使用.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\]'));
}); 
您应该使用
$(this.attr('name')
而不是
this.name

尝试以下方法: 假设行属性名为“filterCol”,则可以为该属性设置新值

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

你为什么选择
id
而不是
name
$("#trId").attr("filterCol", newValue);