2012-01-04 12 views
19

属性値の検索と置換の実行が困難です。私は、例えば、適切な数と各のname属性を更新するために探しています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> 

このHTMLを考えてみましょうルール[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

は、なぜあなたはserachんその属性に新しい値を設定していないNAME''用することができますか? – jantimon

答えて

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」をあなたがid` `ため

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