2013-02-27 75 views
0

我有類似:如何通過使用JQuery的孩子的內容來訂購html元素?

<div id="outer-wrapper"> 
    <div class="outer"> 
    <p>......</p> 
    <span class="author">Deena</span> 
    </div> 
    ... 
    <div class="outer"> 
    <p>......</p> 
    <span class="author">Amanda</span> 
    </div> 
</div> 

我想用span.author價值訂購div.outer。

到目前爲止,我設法代碼如下:

var mylist = $('#outer-wrapper'); 
    var mylist2 = $('#outer-wrapper2'); 
    var listitems = mylist.find('.outer span.author'); 
    listitems.sort(function(a, b) { 
    return $(a).html().toUpperCase().localeCompare($(b).html().toUpperCase()); 
    }) 
    $.each(listitems, function(idx, itm) { mylist2.append(itm); }); 

事情是這樣只是增加了#外wrapper2跨度的項目,而不是整個div.outer。

我該如何讓它工作?

謝謝!

+0

從ITM,選擇祖先你想要移動。請注意,你不需要$ .each – 2013-02-27 19:00:48

+0

是的。追加'item.parent()'而不是item可能會爲你做。 – Rondel 2013-02-27 19:04:16

回答

0

你需要的.outer元素進行排序,以及排序函數內部,從.author做基於返回的HTML排序:

var mylist = $('#outer-wrapper .outer').get(), 
    mylist2 = $('#outer-wrapper2'); 

mylist.sort(function(a, b) { 
    return $(a).find('.author').html().toUpperCase().localeCompare($(b).find('.author').html().toUpperCase()); 
}); 

mylist2.append(mylist); 

FIDDLE

相關問題