2015-05-12 60 views
0

如何根據孩子的輸入值來訂購div?我想最終得到這個工作的關鍵。根據孩子的輸入值排列div的ASC順序

<div class="wrap_0"> 
    <input class="sort_by" value="10"/> 
</div> 
<div class="wrap_1"> 
    <input class="sort_by" value="3"/> 
</div> 
<div class="wrap_2"> 
    <input class="sort_by" value="7"/> 
</div> 

更改爲:

<div class="wrap_0"> 
    <input class="sort_by" value="3"/> 
</div> 
<div class="wrap_1"> 
    <input class="sort_by" value="7"/> 
</div> 
<div class="wrap_2"> 
    <input class="sort_by" value="10"/> 
</div> 

我目前的jQuery不工作:

var sortedArray = $("div[class^='wrap_']").get().sort(function(a, b) { 
    var idx = parseInt($(a).find(".sort_by").value,10); 
    var idx2 = parseInt($(b).find(".sort_by").value,10); 
    return idx > idx2; 
}); 
$(sortedArray).each(function() { 
    $(this).appendTo("body"); 
}); 

小提琴:https://jsfiddle.net/E4U2V/3/

任何幫助表示讚賞。

回答

2

使用.val()而不是.value

.val()是在jQuery對象上使用的方法。而關於javascript對象的.value

$(a).find(".sort_by")[0].value; 

而且,不需要使用.each()來追加數組。


var sortedArray = $("div[class^='wrap_']").get().sort(function(a, b) { 
    var idx = parseInt($(a).find(".sort_by").val(),10); 
    var idx2 = parseInt($(b).find(".sort_by").val(),10); 
    return idx > idx2; 
}); 
$(sortedArray).appendTo("body"); 

Updated fiddle

+0

完美!感謝你的快速回復。你有什麼想法我可以怎樣處理兩次輸入相同號碼的人?意思是,如果他們鍵入11但11已經存在,那麼類似的值和它之後的每個值都會增加1?所以9,11,11,12會變成9,11,12,13。再次感謝。 – Mcestone

+0

@shaunakd演示提琴無法正常工作 – Tushar

+0

@Tushar,謝謝你,我無法將你的編輯與我的下一個合併,所以小提琴鏈接讓老版本變得模糊。 –

相關問題