如何使用jquery在div中获取特定文本

时间:2015-12-24 15:39:57

标签: javascript jquery html css

<div class="news"> 
       <script type="text/javascript">

           some codes

       </script>

           needed content

       <div class="seperator">

           unneeded content

       </div>

  unneeded content2

 </div>        

我想得到的只是&#34;需要的内容&#34;这里。所以我必须删除脚本标记并获取所有文本直到 div.seperator

如果我只是从根(div.news)得到文本而不包含子元素,我将解决问题或我必须清理子元素的另一种方式。

我该如何处理这个问题。

感谢您的关注。

3 个答案:

答案 0 :(得分:4)

您可以使用contents()filter()检索元素中的textNodes。试试这个:

var textNodes = $('.news').contents().filter(function() {
    return this.nodeType == 3 && this.nodeValue.trim() != ''
}).get();

console.log(textNodes[0].nodeValue.trim()); // = 'needed content'

Example fiddle

答案 1 :(得分:1)

尝试使用父.childNodes元素DOM的{​​{1}},选择索引为.news的节点

2

或者,在父$(".news")[0].childNodes[2].nodeValue.trim() for上使用.news循环,.childNodes .previousElementSibling.tagName的节点

"SCRIPT"
var nodes = document.querySelector(".news").childNodes;
for (var i = 0; i < nodes.length; i++) {
  if (nodes[i].previousElementSibling 
      && nodes[i].previousElementSibling.tagName === "SCRIPT") {
    console.log(nodes[i].nodeValue.trim());
    break;
  }
}

答案 2 :(得分:1)

使用 contents() 获取所有节点,包括文本节点。然后使用.not($('*'))排除元素节点:

&#13;
&#13;
console.log($('.news').contents().not($('*')).text().trim()); //needed content
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="news">
  <script type="text/javascript">
    some codes
  </script>

  needed content

  <div class="seperator">

    unneeded content

  </div>

</div>
&#13;
&#13;
&#13;

<小时/> 根据您更新的帖子,您可以使用 previousSibling .seperator之前获取文字节点:

&#13;
&#13;
console.log($('.seperator')[0].previousSibling.textContent.trim()); //needed content
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="news">
  <script type="text/javascript">
    some codes
  </script>

  needed content

  <div class="seperator">

    unneeded content

  </div>

  unneeded content2
</div>
&#13;
&#13;
&#13;