由於@ pimvdb在問題評論中指出:「DOM不是一個扁平列表,而是一個分層模型。」
所以爲了弄清楚你的問題,我必須做出假設。
我會假設你start_element
和end_element
是兄弟,和你正在努力尋找那也是同級,但兩者之間似乎所有的DOM元素。換句話說,我假設你正在談論DOM的一個特定平面部分。如果我的假設是錯誤的,請忽略這個答案。如果我的假設是正確的,那麼你可以遍歷這樣所有的兄弟姐妹,只有在兩者之間匹配的:
var siblings = $(start_element).parent().children();
var currently_between = false;
var matches = [];
siblings.each(function() {
if (this == start_element) currently_between = true;
else if (this == end_element) currently_between = false;
else if (currently_between) matches.push(this);
});
// "matches" contains the in-between elements
注意,這個假設start_element
和end_element
是普通DOM對象,而不是jQuery的擴展對象。如果他們是jQuery擴展,那麼檢查應該像if (this == start_element.get(0))
。
還要注意的是有一個jquery siblings方法,但我們用$(start_element).parent().children()
,而不是因爲我們想原來start_element
成爲組的一部分。 sublings()
方法將不會使用。
什麼是「之間」? DOM不是一個扁平列表,而是一個分層模型。 – pimvdb
你想知道如何複製元素嗎?或者如何遍歷元素?或者如何追加/刪除元素? –
我們可以假設任何關於開始和結束元素之間的關係嗎?他們總是兄弟姐妹嗎? –