2017-05-12 152 views
0

我最近不得不編寫代碼來搜索與標題相關聯的字段值的頁面。 HTML結構是以下形式:jQuery選擇器下一個兄弟的最後一個元素

<table><tr> 
 
    ...etc... 
 
    <td><div><span>Type of Fruit:</span></div></td> 
 
    <td><span><div><span><div>Orange</div></span></div></span></td> 
 
    ...etc... 
 
    </tr></table>

我解決了以下jQuery的問題:

var strFruitType = $('span').filter(function(){ 
 
      return $(this).text() === 'Type of Fruit:'; 
 
    }).closest('td').next().find(':last').text().trim(); 
 

 
    //Evaluate Fruit Type. 
 
    switch(strFruitType) { 
 
    ...etc...

這是最直接的或有效的方法來找到下一個兄弟姐妹的最後一個元素?

+0

你有過HTML控件? –

+0

不,我無法控制HTML。我的任務是確定與「水果種類:」(顯然,不是真正的標題或數據)標題相關的價值並對其採取行動。頁面上還有其他標題/值組合,我可能也需要評估。 –

回答

3

如果你沒有HTML的控制權,你有什麼看起來不錯。只是一對夫婦的事情:

如果尋找那個包含「水果的類型:」一個字符串是OK,你可以這樣做:

$('span:contains("Type of Fruit:")').closest('td').next().find(':last').text().trim(); 

,你甚至可以縮短到:

$('td:contains("Type of Fruit:")').next().find(':last').text().trim(); 

而且,我不知道如何簡化您的例子是,但它看起來像您可能使用:last找到同級td最深元素元件。但:last確實找到了最後一個直接的孩子。所以,如果你td可能不止一個直接子是這樣的:

<td> 
    <span><div><span><div>Orange</div></span></div></span> 
    <span><div><span><div>Apple</div></span></div></span> 
</td> 

你最終與「蘋果」,但它是因爲:last發現第二span直接td內。所以如果你的td只會有一個直接的孩子,那麼你不需要:last

這給我們留下了:

$('td:contains("Type of Fruit:")').next().text().trim();