2011-07-27 42 views
2

我正在使用此腳本將第三個不同的span插入到第一個,第二個和第三個li s。在dom中使用javascript或jquery插入元素

$("ul li:eq(0)").prepend("<span>1</span>"); 
$("ul li:eq(1)").prepend("<span>2</span>"); 
$("ul li:eq(2)").prepend("<span>3</span>"); 

有沒有辦法重構這段代碼以消除冗餘?

回答

3

如果你想要它做的是那裏所有李標籤:

$("ul li").each(function(i) { 
    $(this).prepend("<span>" + (i + 1) + "</span>"); 
}); 

如果有超過三層華里的標籤,你只希望它做的三個第一:

$("ul li:lt(3)").each(function(i) { 
    $(this).prepend("<span>" + (i + 1) + "</span>"); 
}); 

工作的jsfiddle這裏:

+0

實際上,第二種情況與第一種情況相同,除了將選擇器更改爲'$(「ul li:lt(3)」)''。 –

+0

謝謝@jfriend我正在嘗試使用for循環中的相同的東西,但總是最終得到索引0,當我嘗試使用i + 1時,它變成了01 .... – paul

+0

看起來好像還有更多要學習CSS選擇。謝謝你的提示。 – jfriend00

1

或者你也可以做到這一點像這樣

$("ul li").prepend(function(index, html){ 
       return ("<span>" + (index+1) + "</span>"); 
    }); 
+0

很酷的主意,但不會在內容周圍添加標籤,是不是? – jfriend00

+0

它增加了圍繞數字的範圍,並將其預先加入到li內容中(在第一個版本中省略了span標籤 - 現在添加了) – Michal

+0

@Michal不錯的技巧..你測試了它嗎? – paul

相關問題