2011-06-07 41 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; 
});