2011-06-07 38 views
1

我有以下的jQuery的功能上添加錨點點擊輸入: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; 
}); 

和,我想他們的ID順序(即REC1,REC2,REC3。等等),但我顯然做錯了什麼。輸入被添加,但用於查找最後輸入的選擇器僅查找最後一個非附加輸入,而不是現有和附加輸入集合的最後一個。

我搜索,發現這個線程:

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; 
}); 

它是做'1' + 1等於11,然後111之前,等等等等

+1

'parseInt'將嘗試猜測你提供給它的數字的基數,但我認爲你最好指定你正在使用的基數。所以對於小數點,你可以使用'parseInt(max,10)'。在這種情況下,你不可能得到以'0'或'0x'開頭的數字,但值得注意的是。 +1 – Nalum 2011-06-07 16:29:50

+0

謝謝。你是對的,它確實需要一些「按摩」數據類型,但我留下了同樣的問題;每次事件觸發時,我的'最大'變量都會被賦予最後一個預先存在的ID的ID,而不是任何新添加的ID。 – DaveL 2011-06-08 19:07:40

+0

@daveL,它在我的小提琴中工作正常......你確定嗎? – Neal 2011-06-10 01:44:19

0

存放在無功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; 
});