0

我正在使用这行代码:

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

现在,我只是把它放在一个console.log() 中。我正在使用 Chrome 进行测试,并将值作为空字符串返回,但该值应返回“中间孩子”。

这是 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 并且确实为我提供了一些潜在的洞察力。在小提琴中,我选择了 jQuery 1.6.4,它工作得很好。我在我的网站上运行的 jQuery 版本是 1.6.2。有谁知道这是否可能是我问题的一部分(如果不是全部)?

4

2 回答 2

0

我想出了我的问题。

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

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

于 2014-02-19T19:31:41.067 回答
0

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

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);
 });
于 2014-02-19T18:36:04.413 回答