根据子输入值以ASC顺序排列div

时间:2015-05-12 13:05:45

标签: jquery sorting return-value

您如何根据子输入值订购div?我想最终让这个用于keyup。

<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/

感谢任何帮助。

1 个答案:

答案 0 :(得分: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