Jquery:“查找”范围属性(2个数字之间)

时间:2013-02-03 16:46:22

标签: jquery jquery-ui

我遇到了JQuery的问题我无法解决..

我有这句话:

var $price = $data.find('li[price=' + $max + ']');

找到属于“价格”的属性等于Var“$ max”

现在,基本上,我有2个数字,$ min和$ max,而且我需要“find”来检查属性是否在这两个数字之间..

例如:

  <ul class="ourHolder">
    <li price="200">
    <img src="img1.jpg">
    </li>
    <li price="300">
    <img src="img2.jpg">
    </li>
</ul>

    <script>

// get and assign the ourHolder element to the
    // $holder varible for use later
  var $holder = $('ul.ourHolder');

  // clone all items within the pre-assigned $holder element
  var $data = $holder.clone();
    var $min = 100;
    var $min = 400;
    var $price = $data.find('li[price=' + $max + ']'); //Not sure what to do here
    </script>

应返回两个<li>标签..(两者都在100到400之间)。

新编辑:

我补充说:

var price = data.find('li').filter(function() {
   var price = parseInt($(this).data('price')); // i think here it doesn't find nothing
    return price >= minPrice && price <= maxPrice;
}); 

但我没有回报:(

谢谢!

1 个答案:

答案 0 :(得分:2)

首先,您应该使用data属性,因为只是组建自己的属性会使代码无效。其次,您可以使用filter()根据更复杂的规则集查找元素。试试这个:

<li data-price="200">
    <img src="img1.jpg">
</li>
<li data-price="300">
    <img src="img2.jpg">
</li>
var minPrice = 100;
var maxPrice = 400;
var $matchingLi = $data.find('li').filter(function() {
    var price = parseFloat($(this).data('price'));
    return price >= minPrice && price <= maxPrice;
});