jQuery - 获取宽度为>的最后一个div 0

时间:2015-06-18 14:21:27

标签: javascript jquery

是否有一种比循环遍历所有div更有效的方法并检查宽度以找到宽度为>的最后一个。 0?

以下是我正在经历的一个例子,我使用此调用得到了这个:

// My Call
$( ".pct-slider#tuesdaySlider" ).find(".color-region")

// Example result of above call
[<div class="color-region" style="width: 1;"></div>,
 <div class="color-region" style="width: 2;"></div>
 <div class="color-region" style="width: 3;"></div>
 <div class="color-region" style="width: 4;"></div>
 <div class="color-region" style="width: 0;"></div>
 <div class="color-region" style="width: 0;"></div>]

循环我会找到宽度为4的第4个div。有什么我可以更改/添加到我的$(“。pct-slider #tuesdaySlider”)。find(“。color-region”)调用以获取最后一个div宽度> 0合1或只是没有循环?

4 个答案:

答案 0 :(得分:2)

我能想到的最好的事情就是向后开始。所以

    var reversed =
          $(".pct-slider#tuesdaySlider").find(".color-region").get().reverse();

    $(reversed).each(function() {
        if ($(this).width() > 0) {
            ....
        }
    });

<强>更新

如果您的HTML总是喜欢

 <div class="color-region" style="width: 0;"></div>
 <div class="color-region" style="width: 0;">

你可以做到

$(".pct-slider#tuesdaySlider")
      .find('.color-region:not([style="width: 0;"]):last')

此方法使用:not():last。但是,我告诫你,这种方法不如前者强。

答案 1 :(得分:2)

$( ".pct-slider#tuesdaySlider" ).find(".color-region").not(function () { return !$(this).width(); }).last();

答案 2 :(得分:1)

您可以使用:last

$(".color-region:last").width()

这将返回具有类名color-region

的最后一个元素

修改

var lastDiv = $(".color-region").filter(function() {
    return $(this).width > 0
}).last();

答案 3 :(得分:1)

您可以使用.filter()来减少集合

中的元素
.filter(function(){ return $(this).width() > 0; })

然后.last()获取集合中的最后一个元素。

整个代码如下所示:

$( ".pct-slider#tuesdaySlider" ).find(".color-region").filter(function(){ return $(this).width() > 0; }).last()