2013-10-26 51 views
0

我有一個列表,每個項目都有一個編號的類。我想在特定課程後添加數據,但問題是該項目編號可能不存在。有沒有簡單的解決方案?jQuery:將數據附加到有序列表

data = '<li class="3"></li>'; 
num = 2; 

$('ul .'+num).append(data); 

<ul> 
    <li class="1"></li> 
    // data should be appened here 
    <li class="5"></li> 
</ul> 
+0

類名應該以數字開頭 – Popnoodles

+0

是的,有一個解決方案,但問題不清楚。 如果項目編號不存在,那麼做什麼 - 通過做出什麼決定找到放置數據的位置?如果它確實存在會發生什麼? – Popnoodles

+1

結帳http://jsfiddle.net/arunpjohny/PTKTN/2/ –

回答

1

一個簡單的解決辦法是做到以下幾點:

  • 檢查與類的元素存在。如果沒有,則進行迭代,直到找到下一個最大元素並將元素添加到它。

如果你真的想要的性能,你可以做二進制搜索,這樣你就無法查詢DOM之多。

var data = '<li class="3"></li>'; 
var $ul = $('ul'); 
var num = 2; 

var $li; 
var $currentLi = $ul.find('li.' + num); 
// Go through the iterative search if the li wasn't found. 
if ($currentLi.length === 0) { 
    // Iterate and find the right spot 
    var $lis = $ul.find('li'); 

    var elIndex = 0; 
    var currentNumber = $lis.first(); 
    // Iterate until we found the sweet spot or we're at the end of the lis 
    while (currentNumber < num && elIndex < $lis.length) { 
     ++elIndex; 
     $currentLi = $lis.eq(elIndex); 
     currentNumber = parseInt($currentLi.attr('class')); 
    } 
    // By here you will have the $currentLi found. 
} 
$currentLi.append(data); 

如果保存在一個數組列表順序的解決方案可能是簡單的JavaScript,或者如果你知道列表的詳細信息。

雖然希望有所幫助。