1

我目前有以下

<div class ="parent">
  <div class="inner">Hello
    <div>Goodbye</div>
  </div>
</div>

<div class ="parent">
  <div class="inner">Hello
    <div>Goodbye</div>
  </div>
</div>

我目前正在$(div.parent).each(function(index,item)遍历每个完美运行的父级。

我的问题是我需要选择 hello 这个词。我目前正在使用$(item).text(),但它总是返回 HelloGoodBye,这是一个问题。我需要忽略任何其他 div。

任何帮助表示感谢。

4

4 回答 4

1

jQuery.text()我建议不要使用该方法,而是找到第一个childNode您要查找的文本节点:

​var divs = document.getElementsByClassName('inner'),
    i = 0;
for (i = divs.length; i--;) {
  console.log(divs[i].childNodes[0]);   
}

或者

var divs = $('.inner');
divs.each(function() {
  console.log(this.childNodes[0]);
});

请记住,该childNodes方法不会被 jQuery 识别。

于 2012-08-08T15:53:39.157 回答
0

尝试

$('div.parent').not('.parent .inner div').each(function(index,item)

交替

$(div.parent:not('.inner div').each(function(index,item)

http://api.jquery.com/not/

于 2012-08-08T15:21:02.020 回答
0

这个主题之前已经讨论过很多合适的解决方案:Using .text() to retrieve only text not nested in child tags

于 2012-08-08T15:26:44.277 回答
0

您可以通过克隆每个元素、删除不需要的 div 然后抓取文本来实现此目的。

$('div.parent div.inner').each(function(index,item) {
    $this = $(item).clone();
    $this = $this.find('div').remove();
    $this.text();
});​

这是一个 JS Fiddle,上面的代码和 HTML 正在运行:http: //jsfiddle.net/L8T7s/

于 2012-08-08T15:31:16.667 回答