2011-06-05 35 views
1

如何找到使用jQuery的最大「頁面」值小於「6」的元素?jQuery中的最小/最大功能

假設「頁面」只有數值,並且元素按「頁面」排序。例如:

<div id="wrapper"> 
    <div page="1"></div> 
    <div page="2"></div> 
    <div page="4"></div>  => answer 
    <div page="6"></div> 
    <div page="7"></div> 
    <div page="9"></div> 
</div> 
+0

是否需要用jQuery來完成? – GolezTrol 2011-06-05 10:12:44

+0

這樣做沒有內置的jQuery支持,它只是遍歷元素並訪問它們的屬性比純JS更容易。 – Alnitak 2011-06-05 10:18:49

+0

問:總是有一個元素存在你正在尋找的值(即'6')?元素是否總是在DOM樹中排序(即按頁面值排序)? – 2011-06-05 10:20:13

回答

2

您可以使用filter選擇所有小於6的選擇,然後選擇最後一個。

$('#wrapper div').filter(function() { 
    return $(this).attr('page') < 6; 
}).last().css('color', 'red'); 

例如:http://jsfiddle.net/niklasvh/rFYfM/

+2

這隻適用於元素已經排序的情況。 – 2011-06-05 10:17:14

+0

我剛寫完完全一樣的代碼(但沒有css) – 2011-06-05 10:18:10

+0

@Felix Kling好點。我從這個問題推測他們是 – Niklas 2011-06-05 10:20:42

2

因爲你沒有(原來)指定列表是否排序,我假設他們沒有,在這種情況下,你必須遍歷所有元素,並記錄一個比賽:

var maxEl = null; 
var maxNum = 0; 

$('#wrapper > div').each(function() { 
    var num = $(this).attr('page'); 
    if (num > maxNum && num < 6) { 
     maxNum = num; 
     maxEl = this; 
    } 
}); 

// result is in maxEl 

http://jsfiddle.net/alnitak/WdT2m/的工作演示

+0

感謝您的一般答覆,但尼克拉斯通過這個例子猜測我的意圖更好。 – 2011-06-05 10:27:00

0

這適用於未分類的列表:

i = 0; 
$('div').filter(function(){ 
    $thispage = $(this).attr('page') 
    if($thispage < 6 && $thispage > i){ 
     i = $thispage; 
     return true; 
    } 
    return false; 
}).last() 
0
$("#wrapper > div[page]") 
.filter(function() { return parseInt($(this).attr("page")) < 6; }) 
.sort(function(a,b) { return parseInt($(a).attr("page")) - parseInt($(b).attr("page")); }) 
.last(); 

拆毀了

  • 抓鬥所有div的 立即在你的包裝 有一個page屬性。

  • 過濾器以僅包括是 小於6

  • 排序 這些元素的那些元素。 (如果你知道你的div被排序,可以跳過這個)。

  • 選擇找到的最後一個元素,從而選擇符合條件的元素。