2011-12-20 63 views
2

我對一組元素進行jQuery篩選,檢查哪些項目的值低於90並超過100.我想要做的也是獲取匹配這些條件的項目數,並最終將它們保存爲輸出在頁面的其他地方:如何獲取從匹配條件返回的jQuery元素的數量?

$("#dtarget li").filter(function() 
{ 
    if (parseInt(this.innerText) < 90) 
    { 
     $(this).css("color","red"); 
    } 
    else if (parseInt(this.innerText) > 100) 
    { 
     $(this).css("color","gold"); 
    } 
}); 

我是新來的jQuery和Javascript,所以很容易。

+0

可能重複(http://stackoverflow.com/questions/2686390/jquery-how-do-i- count-the-element-of-elements-by-a-selector) – 2011-12-21 00:02:39

回答

1

http://api.jquery.com/length

您可以撥打.length一個jQuery對象得到它包含DOM元素的數量。

//this will return a jQuery object with elements who's value is less than 90 
var less_than_90 = $("#dtarget li").filter(function() 
{ 
    var text = $(this).text(); 
    if (parseInt(text) < 90) 
    { 
     return true; 
    } 
    return false; 
}); 

//then you can get the number of DOM elements within the jQuery object created above 
var less_than_90_count = less_than_90.length; 

然後可以對大於100的任何東西進行此操作。

請注意,我刪除了this.innerText而轉而使用$(this).text(),因爲您已經在使用jQuery,因此您可以儘可能地將其取出。

這裏是一個演示:http://jsfiddle.net/acyZC/1/

+0

'innerText'在任何瀏覽器中都不可用(我認爲Firefox使用'textContent')。 – 2011-12-21 02:02:04

+0

好點。將我的代碼更改爲jquery選擇器。 – Psdpainter 2011-12-21 16:31:03

0

也許這會工作:

var count = $("#dtarget li").filter(function() 
{ 
    if (parseInt(this.innerText) < 90) 
    { 
     return true; 
    } 
    else if (parseInt(this.innerText) > 100) 
    { 
     return true; 
    }else{ 
     return false; 
    } 
}).length; 

編輯:return是受限制的項目。我在想什麼。

+0

var return可能不是最好的,因爲'return'是關鍵字 – asawilliams 2011-12-21 00:03:37

0

我想補充一個計數器,每一個

var redCounter = 0, 
    goldCounter = 0; 

$("#dtarget li").filter(function() { 
    if (parseInt(this.innerText) < 90) { 
     $(this).css("color","red"); 
     redCounter++; 
    } 
    else if (parseInt(this.innerText) > 100) { 
     $(this).css("color","gold"); 
     goldCounter++; 
    } 
}); 
0

我不認爲你明白的.filter()目的。它用於根據某些標準或函數減少給定jQuery對象中的項目數量。如果將函數用作參數.filter(fn),那麼您從過濾器返回true以在最終集合中包含元素,並返回false以將其刪除。你既沒有做。

如果你只是想遍歷一個jQuery對象,請使用.each()而不是.filter()

要保存jQuery對象的結果,只能把它分配給一個變量這樣並重復使用.each()

var $targets = $("#dtarget li").each(function() 
{ 
    if (parseInt(this.innerText) < 90) 
    { 
     $(this).css("color","red"); 
    } 
    else if (parseInt(this.innerText) > 100) 
    { 
     $(this).css("color","gold"); 
    } 
}); 

那麼你可以參考它以後使用變量$的目標和你可以找出具有$ targets.length的jQuery對象中有多少元素。例如:

if ($targets.length > 1) { 
    $targets.css("padding-left", "10px"); 
} 
[?JQuery的 - 如何計算由選擇器選擇的元素個數]的
相關問題