2010-09-01 118 views
1

我試圖用jQuery來訪問一個DOM對象,該對象從我開始的DOM對象的代碼中出現。 jQuery的遍歷方法通常很容易,比如.parentsUntil。但是,在這種情況下,我試圖找到的對象不是我從第一個對象開始的父對象或兄弟對象。jQuery - 當DOM元素不在同一棵樹中時,選擇與一個類匹配的前一個DOM元素

例如,設想這樣的層次結構:

    • TR
      • TD上
      • TD乙
    • TR
      • TDÇ
        • 輸入d

在輸入d開始是有可能找到TD上的HTML()時,有可能是任何數量的A和D之間的元素?

感謝您的幫助,我很抱歉如果這太模糊,我會在需要時重寫問題。

+0

我假設A B C和D不是ID,所以你不能直接選擇A。他們是上課嗎?純文本內容?難道可能有多個As?多個表? – 2010-09-01 23:07:01

+0

正確,A B C和D不是ID。問題是輸入D可以很容易地輸入Z,並且我正在尋找HTML之前出現的第一個類。輸入Z和td A之間的DOM樹中可能沒有關係。 – ianneub 2010-09-03 16:27:06

回答

2

我不確定你在問什麼(請參閱我上面的評論)。因此,假設你想找到A類的td最接近元素D同時在DOM是「上面」 D的HTML內容,你可以嘗試這樣的事:

$('input#D')  // somehow uniquely identify our starting point 
    .closest('tr') // up to the closest enclosing TR 
    .prevAll()  // and then get its preceding siblings 
    .has('td.B') // reduce this set to only those containing a td.B 
    .last()   // choose the last one (thus closest to 'D') 
    .find('td.B') // now work downward to td.B itself 
    .html();  // and get the content 

它關閉我的頭頂,所以有可能是一個更有效的方式來做到這一點(而且沒有經過測試),但也許這給你一些想法。

+0

謝謝!我認爲這將適用於這種情況。你搖滾! – ianneub 2010-09-03 16:28:48

相關問題