2015-11-13 55 views
2

我理解使用.last()或:last-child等來獲取元素的最後一個兄弟,但是如何獲得最內部的元素text()相同的標籤名稱,而不使用任何類或ID?jquery找到最後一個嵌套元素

例如:

$(body).find('div').text(); 
<div> 
    <div> 
     <div> 
      <div>Get this text</div> 
     </div> 
    </div> 
    <div> 
     <div> 
      <div> 
       <div> 
        <div>And get this text</div> 
       </div> 
      </div> 
     </div> 
    </div> 
</div> 

當我使用了一個循環返回文本上每個div都使用$。每次,我返回爲每個div的文字文本的複製()。

在此先感謝

回答

2

你可以選擇不通過合併:not()/:has()選擇包含一個子元素div元素。這實質上否定了有一個孩子都div元素:

$('div:not(:has(*))').text(); 

如果你想要一個數組的文本字符串:

Example Here

var textArray = $('div:not(:has(*))').map(function (_, el) { 
    return el.innerText; 
}).get(); 

console.log(textArray); 
0

這是一個固有的遞歸問題,下面做工作太:

function getText(elem) { 
    if (elem.children().length === 0) { 
     console.log(elem.html()); 
    } else { 
     elem.children().each(function() { 
       getText($(this)); 
      } 
     ); 
    } 
} 

getText($('div').first());