2011-04-07 68 views

回答

0

參考this

這樣

$('selector').nextALL('selector') 

的另一種方式是指這個nextAll

$('div.third-item').nextAll("div") 
1

我不相信有一個簡單的方法來做到這一點。真正的問題是你爲什麼想要?無論如何,如果你真的需要,.nextAll(),.each()和.children()的組合會有所幫助。

var nodes = []; 

$('#original').nextAll().each(function() { 
    nodes.push(this); 
    $(this).children().each(function() { 
    // some recursive function to add a deep set of children 
    } 
} 

但是,你應該再次做一些不同的事情。

1

你是如何識別你的 '某些元素'?它使用了一個特定的ID。或者只是一個標籤名稱。

您也可以爲每個標記添加一個id,您將其命名爲'certain element',並使用nextall()顯示該id之後的所有內容。這只是一個瘋狂的猜測。

7

如果你正在談論的元素都是兄弟姐妹彼此相關,那麼.nextAll()是使用的功能。

如果這些元素可以出現任何地方在頁面上(無論它們嵌套什麼水平),那麼你可以採取的事實,jQuery的(如1.4版本起)始終返回文檔順序的元素的優勢,即使當你.add()收集的東西。

因此,基本思想是首先選擇所有元素,而不管它們是在「start」元素之前還是之後,然後將「start」元素添加到集合中。然後,您可以循環訪問已排序的元素,查找「開始」元素的位置。然後,只需.slice()這個位置之後的所有元素:

var start = '#start'; 
var all = 'p'; 
var index; 

var afters = $(all).add(start).each(function (i) { 
    if ($(this).is(start)) { 
     index = i; 
     return false; // quit looping early 
    } 
}).slice(index + 1); 

看到它在行動here

相關問題