2012-01-04 104 views
19

我很難執行查找和替換屬性值。JQuery:查找和替換屬性值

考慮這個網站:

<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> 

我期待更新例如適當的次數來對每個的name屬性規則[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」是未定義的。

我在哪裏錯了?

感謝

+0

爲什麼你的檢索算法'id'而不是'name'? – jantimon 2012-01-04 15:37:40

回答

20

要更新元素的屬性,你應該使用.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\]')); 
}); 
3

試試這個:

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

您應該使用$(this).attr('name'),而不是this.name

5

試試這個: 假設行屬性名稱是「filterCol」,那麼你可以將新的值設置爲屬性

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