从jquery中段落的每个子节点获取文本

时间:2011-10-24 05:39:04

标签: jquery html

这是我的HTML代码:

<div id="notes">
<table class="noborder">
   <tr><th class="noborder"><span>notes</span></th></tr>
   <tr><td>
       <p id="notes_p">

       <p>#1: dhhhhhhfdfffg
       </p>

       <p> qqqqqqqqqqwwwwwwww wweeeeeeeeerr rrrrrrrtt tttttttt  
       </p>

       <p>#2: asldkflaksdjflks, lasjdlfjsaldfjasldjfoajsdkfjaslkdjlkfasjdfwoidjfalk,zmncv,mznoqeworjoiejflaksdlfjwaf</p>
       </p>
    </td></tr>
 </table>
 </div>

我想要做的是获取paragraph中每个#notes_p的文字。我尝试过使用... $("#notes_p").html(),但我只是空白了。与.text()相同。为什么会这样?

如何正确获取innerHtml?因为我想在.wrap()中使用paragraph,然后在内部使用文本。

2 个答案:

答案 0 :(得分:4)

段落不会嵌套,因此浏览器会通过展开嵌套来修复您的HTML。

来自HTML4 specification

  

P元素代表一个段落。它不能包含块级元素(包括P本身)。

来自HTML5

  

内容模型:
  短语内容。

phrasing content是普通字符数据和phrasing elements

  

em strong ...

请注意,<p>不是一个措辞元素。

浏览器(可能)最终会在DOM中使用此结构:

<p id="notes_p"></p>
<p>#1: dhhhhhhfdfffg</p>
<p> qqqqqqqqqqwwwwwwww wweeeeeeeeerr rrrrrrrtt tttttttt</p>
<p>#2: asldkflaksdjflks, lasjdlfjsaldfjasldjfoajsdkfjaslkdjlkfasjdfwoidjfalk,zmncv,mznoqeworjoiejflaksdlfjwaf</p> 

结果是#notes_p为空,$('#notes_p').html()没有任何用处。您可以通过使用您喜欢的DOM检查器检查页面结构来验证这一点。

尝试用<p id="notes_p">替换<div id="notes_p">,然后事情就会开始变得有意义。

答案 1 :(得分:1)

您可以在此处查看http://jsfiddle.net/vbx3x/

$('p').each(function(index) {
    alert(index + ': ' + $(this).text());
});