返回文本节点

时间:2014-02-19 18:22:25

标签: jquery dom nodes textnode

我正在使用这行代码:

$("#middle_child").contents().filter(function(){return this.nodeType == Node.TEXT_NODE;}).text();

现在,我只是把它放在console.log()中。我正在使用Chrome进行测试和测试value返回为空字符串,但该值应返回“Middle Child”。

这是HTML:

<div id='parent'>
  Parent
  <div id='oldest_child'>
    Oldest Child
    <div id='middle_child'>
      Middle Child
        <div id='youngest_child'>
          Youngest Child
        </div>
    </div>
  </div>
</div>

<div id='lone'>Lonely Div</div>

编辑:我试过制作一个jsfiddle&amp;这确实为我提供了一些潜在的见解。在小提琴中我选择了jQuery 1.6.4&amp;它运作得很好。我在我的网站上运行的jQuery版本是1.6.2。有谁知道这可能是我问题的一部分(如果不是全部的话)吗?

2 个答案:

答案 0 :(得分:0)

您是否尝试将.text值存储到变量中并进行记录?不知道你的问题在哪里。看看这个JSFiddle,它使用你发布的相同代码。单击该按钮将使用#middle_child中的文本替换#lone中的文本。

http://jsfiddle.net/m5xPd/

 var data = $("#middle_child").contents().filter(function () {
    return this.nodeType == Node.TEXT_NODE;
 }).text();

 $('#button').click(function(){
     $('#lone').empty().append(data);
 });

答案 1 :(得分:0)

我想出了我的问题。

首先,我撒谎,我使用jQuery版本1.9.1由于某种原因它在链接中显示为1.6.2,但文件是1.9.1。

现在,我的问题:我忘了将我的脚本包装在$(document).ready()中。