2011-06-07 5 views
1

のために、私はアンカークリックで入力を追加するには、次のjQueryの機能を持っている:私は、ID、それらを順次、(すなわちREC1、REC2、REC3したい、jQueryのセレクタ.append'dコンテンツ

$("a#addrec").click(function() { 
    var max = $("span#recommends input[id^='rec']:last").attr("id").substr(3, 1);         
    var next = max + 1; 
    $("span#recommends").append('<input type="text" id="rec'+next+'" name="rec[]" placeholder="Joe\'s Nightclub" style="margin-left: 175px; margin-top: 10px;" /><div id="rec'+next+'err" class="err"></div><br style="clear: both;" />'); 
    return false; 
}); 

と、等)私は明らかに何か間違っている。入力が追加されますが、最後の入力を見つけるセレクタは、既存の入力と追加された入力の最後の入力ではなく、最後に追加されていない入力のみを検出します。

私が検索され、このスレッドを見つけた:

How to get reference to jQuery selector for content just added via manipulation method?

が、私は非常にこれは私の問題を解決する方法が表示されません。

「アンカーをクリックするたびに新しく追加された入力を選択するにはどうすればよいですか?

答えて

1

あなたはparseIntに持っている(デモ:http://jsfiddle.net/UtA5E/

$("a#addrec").click(function() { 
    var max = $("span#recommends input[id^='rec']:last").attr("id").substr(3, 1); 
    var next = parseInt(max) + 1; 
    $("span#recommends").append('<input type="text" id="rec' + next + '" name="rec[]" placeholder="Joe\'s Nightclub" style="margin-left: 175px; margin-top: 10px;" /><div id="rec' + next + 'err" class="err"></div><br style="clear: both;" />'); 
    return false; 
}); 

それは、その後11111に等しい'1' + 1とをしていた前に、などなど

+1

'parseInt'が試行されますあなたが提供している番号の基数を推測することができますが、あなたが使っているベースを指定する方が良いと思います。したがって、小数点の場合は 'parseInt(max、10)'を使用します。この状況では '0'または' 0x'で始まる数字は得られませんが、それは注目に値します。 +1 – Nalum

+0

ありがとうございます。そうです、データ型の「マッサージ」が必要ですが、同じ問題が残っています。イベントが発生するたびに、私の 'max'変数には、新しく追加されたものではなく、最後に存在するIDのIDが割り当てられます。 – DaveL

+0

@daveL、それは私のフィドルでうまくいきます...あなたは確信していますか? – Neal

0

ストアVarのDOM要素のjQueryの解釈毎回DOMに直接アクセスするのではなく、DOMに直接アクセスする必要はありません。

var $records = $("span#recommends"); 

$("a#addrec").click(function() { 
    var max = $($records + " input[id^='rec']:last").attr("id").substr(3, 1);         
    var next = max + 1; 
    $records.append('<input type="text" id="rec'+next+'" name="rec[]" placeholder="Joe\'s Nightclub" style="margin-left: 175px; margin-top: 10px;" /><div id="rec'+next+'err" class="err"></div><br style="clear: both;" />'); 
    return false; 
});