简体   繁体   English

Jquery:按内部元素的属性排序

[英]Jquery: Sort by inner element's attribute

I have following code:我有以下代码:

<div>
  <div id="1">
    <h3>Price: 50</h3>
    <span id="price" min-price="50"></span>
  </div>
  <div id="2">
    <h3>Price: 30</h3>
    <span id="price" min-price="30"></span>
  </div>
  <div id="3">
    <h3>Price: 40</h3>
    <span id="price" min-price="40"></span>
  </div>
</div>

I need to sort these 3 divs based on min-price attribute.我需要根据min-price属性对这 3 个 div 进行排序。 Is it possible in Jquery?在 Jquery 中可能吗? I found sort() function, but I was not able to use it correctly.我找到了sort()函数,但我无法正确使用它。 Thank you.谢谢你。

You can use .sort() function:您可以使用.sort()函数:

$('div[id]').sort(function (a, b) {
  var minprice1 = parseInt( $(a).find('span').attr('min-price'));
  var minprice2 = parseInt( $(b).find('span').attr('min-price'));
  return (minprice1 < minprice2 ) ? -1 : (minprice1 > minprice2 ) ? 1 : 0;
});

Try this :尝试这个 :

 $(document).ready(function() { $("div[id]").each(function(number,ele) { $("div[id]").not($(ele)).each(function(index,el){ a = $(ele).find("span").attr("min-price"); b = $(el).find("span").attr("min-price"); if( parseFloat(a) > parseFloat(b) ) $(ele).insertAfter($(el)); }) }) })
 <div> <div id="1"> <h3>Price: 50</h3> <span id="price" min-price="50"></span> </div> <div id="2"> <h3>Price: 30</h3> <span id="price" min-price="30"></span> </div> <div id="3"> <h3>Price: 40</h3> <span id="price" min-price="40"></span> </div> </div> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>

 function sortElements(element, prop, sortDescending) { var arrElements = [], origElements = []; $.each(element, function(){ arrElements.push($(this).attr(prop)); origElements.push($(this).attr(prop)); }); arrElements.sort(); if(sortDescending) arrElements.reverse(); for(var i = 0, l = arrElements.length; i < l; i++) $("#sortDiv").append($("#"+arrElements[i])); $("#divOrig").html($("#sortDiv").html()); $("#sortDiv").remove(); } sortElements($("#divOrig span"), "min-price", true);
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div id="divOrig"> <div id="50"> <h3>Price: 50</h3> <span id="price" min-price="50"></span> </div> <div id="30"> <h3>Price: 30</h3> <span id="price" min-price="30"></span> </div> <div id="40"> <h3>Price: 40</h3> <span id="price" min-price="40"></span> </div> </div> <div id="sortDiv" style="display:none" ></div>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM