2012-02-16 99 views
0

Jquery的事件我有這樣的腳本,在KEYUP產生50「一個」標籤:「刷新」上KEYUP

$("#searchbox").live("keyup",function(){ 
    var count = 50; 
    var aElements = ""; 

    for (var i = 0; i < count; i++) { 
     aElements += "<a href=\"#\">" + i + "</a>"; 
    } 

    $("#page").append(aElements); 
}); 

的問題是每個KEYUP該金額的廣告了。因此,不是針對特定數量的50個事件觸發事件,而是將代碼廣告添加到計數中所以對於每個'keyup'我都會得到50 + 50 + 50'a'標籤等等。所以當我輸入'stackoverflow'時,我得到了650'a'標籤:)而不是50.那麼我該怎麼做?請記住,這個數字實際上是一個每次都會改變的var,所以添加事件.one()將不起作用。

+0

謝謝你們,我會注意到它,但它會需要一段時間才能看到我的劇本什麼工作,請有關驗收耐心.. – Youss 2012-02-16 20:21:34

+0

S(KEYUP) - > 50 ** A **標籤+ a(鍵盤) - > 50 ** a **標籤+ ...自然會是13x50 = 650 ** a **標籤。你真正願意做什麼? – inhan 2012-02-16 20:21:43

回答

1

不要使用.append(),正如它的名字說,增加了新的元素,但不會刪除以前的。在#page的末尾添加一個容器,並使用.html(),以便刪除舊內容。

1

我不是100%肯定我明白你的要求,但我相信這是你在找什麼:

選項1

$("#page").html(""); //Clear HTML from #page 

選項2

$("#page a").remove(); //Clear only the anchor tags from #page 

選項3

只需使用.html()取代.append()。除非你有特定的理由使用.append(),否則這是最好的選擇。

$("#page").html(aElements); 

這裏是a working fiddle

1

如果我正確理解你,每次數字會改變(可以更大或更小),你需要更新它以使a標籤的數量等於該數字。

我認爲最好的選擇將是看到已經存在多少和採取相應的行動(除非總數保持很小,在這種情況下,只需擦拭乾淨,然後重新創建每次)。要做到這一點,我將共享類添加到每個a標籤:

aElements += "<a href=\"#\" class=\"number\">" + i + "</a>"; 

,然後執行以下,看看有多少已經存在:

var existing = $(".number").length 

然後,如果數量少不是我要多少有:

for (var i = existing; i < count; i++) { 
    // add more 

而如果是更,請執行下列操作以去除多餘的:

$(".number").gt(count).remove();