2011-04-12 14 views
3

を交換する必要が働いていない各機能は、私は、このHTMLjQueryの各属性

<form method="POST" action="" id="order" class="forms"> 
    <div> 
     <span class="col1">Ref.</span> 
     <span class="col2">Number</span> 
     <span class="col3">Color</span> 
     <span class="col4">Remarks</span> 
     <span class="col5">Prijs</span> 
    </div> 
    <div class="order"> 
     <input type="text" name="ref-1" class="col1" /> 
     <input type="text" name="num-1" class="col2" /> 
     <input type="text" name="color-1" class="col3" /> 
     <input type="text" name="remark-1" class="col4" /> 
     <input type="text" name="price-1" class="col5" /> 
    </div> 
    <a id="add" href="#">+</a> 
</form> 

そして、このjqueryの

$("#add").click(function() {  
    $("#order").children(":eq(1)").clone().each(function() { 
      var index = $("#order").children().length - 1; 
      alert(index); 

     $(this).children().find(":input").each(function() { 

       alert(index); 

        $(this).attr("[name]", function(i, v) { 

         return v.substr(0, v.lastIndexOf("-") + 1) + index; 

        }).val(""); 

       }); 
    }).insertBefore("#add"); 
}); 

を持っている私は、インクリメントされた値にそれぞれ入力された名前の-1部品を交換する必要があります。 しかしJS $(this).attr()機能 私はこのコードを実行すると、私は#add

答えて

3

をクリックしたとき、それは私はあなたのコード全体をチェックしていませんが、中に明白な誤りがある二警告ボックスが表示されないになることはありませんその

.attr("[name]" 

.attr("name" 

する必要がありますまた、を削除する必要がありますライン

$(this).children().find(":input") 

からそれ

$(this).find(":input") 

するthisが入力を含んdiv要素を意味するからです。 .children()を実行すると、input要素が返され、find()を実行すると、何も返されません。これは、findが選択要素の内部を調べるためで、要素が実行されていないためです。 ( ":入力")とパスhttp://jsfiddle.net/gaby/TpmdP/

+0

これは私の問題を解決しませんでしたが、あなたは正しいです。 – as3student

+0

@ as3student、解決策を使った答えを更新しました。 –

+0

これを私のhtmlでテストしましたか? 2番目のアラートが表示されるため、クローンした要素は追加されません。それは本当に奇妙だ – as3student

0

更新jsfiddleは.find削除 ":入力" を引数として.childrenします()。 children()は要素をフィルタリングしても子要素を取り出すことができます。