簡體   English   中英

jQuery:查找具有匹配內容/步行樹的祖先兄弟姐妹

[英]jQuery: finding ancestors siblings with matching content / tree walking

<table>
    <tbody>
      <tr>
     <td class="TargetRow">Not this one</td>
      </tr>
    </tbody>
    <tbody> ... </tbody>
    <tbody>
      <tr>
     <td class="TargetRow">This one</td>
      </tr>
    </tbody>
    <tbody> ... </tbody>
    <tbody>
        <tr class="ContextRow"> ... </tr>
    </tbody>
</table>

給定以上HTML,我試圖找到一種方法來獲取TargetRow類的先前tr的內容。 即,對於包含td.TargetRow的前一個第一個tbody,返回td.TargetRow

我正在使用jQuery,目前我可以使用以下方法來獲取包含ContextRow的tbody

 jQuery(contextRow).parents("tbody").first()

我現在如何找到包含tr.ContextRow的那個tbody的先前同級?

如果只有一種方法可以讓我從contextRow說起,走到DOM樹上,直到找到與“ td.TargetRow”匹配的元素,那將是理想的選擇。

非常感謝。

jQuery('.ContextRow').closest("tbody").siblings('tbody td.TargetRow:last'); 

編輯:最后不是第一

看到它的工作原理: http : //jsfiddle.net/wU6h9/

您的描述讓我有些困惑,但是當您說“查找包含tr.ContextRow的那個tbody的上一個同級兄弟”時 ,聽起來好像您想找到包含一個包含類.contextRow和一個元素的上一個<tbody>得到它的.targetRow

如果那是您想要的,請嘗試此。

jQuery(contextRow).parents("tbody:first")
                  .prevAll('tbody:has(tr.ContextRow):first td.TargetRow');

如果您要說td.TargetRow請執行'tbody:has(td.TargetRow):first td.TargetRow'

$(".ContextRow").closest("tbody").prevAll().find(".TargetRow").eq(0).css({color: "red"});

這將返回最接近的單個前一個.TargetRow

http://jsfiddle.net/LfWg3/3/

最接近 .closest()完全滿足您的需求。

獲取與選擇器匹配的第一個祖先元素,從當前元素開始,一直到DOM樹。

您的查詢是

$('.ContextRow').closest('tbody').siblings('tbody td.TargetRow').last(); 

它將返回一個對象(不像父母那樣,它返回多個元素直到頂部),或者如果id找不到一個則返回零。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM