您的位置:首页 > Web前端 > JQuery

当标签内有嵌套的子标签的情况下,如何用jquery检索纯文本内容

2015-03-11 13:40 253 查看
如以下代码所示,id为tidy的<a>标签中既存在<span>标签,又存在“This is some text”的文本。那么问题来了,怎么用jquery只取“This is some text”的文本,而不取<span>里的内容?

<a id="tidy">
[/code]
<span id="Span1">First span text</span>
[/code] This is some text <span id="Span2">Second span text</span></a>

方法一:使用.html()取到a标签中的所有内容后,用正则表达式筛选出不被有"<"、">标签包围的内容,并去掉换行符。

$("#tidy").html().replace(/<.*>*<.*>|\s/g,"");


评价:初步达到目标,解决问题的工具更多还是正则表达式,并且由于正则表达式的制约,该方法适用性较窄。

方法二:复制整个<a>,然后去掉a标签的子标签,再用.text()获得所需文本。

<span style="font-size:14px;">$("#tidy")
.clone()//复制a标签
.children()//找到所有子标签
.remove()//删除所有子标签
.end()//退回上一匹配元素
.text();//取到所需文本</span>


评价:达到目标,但是对原表签的操作是只读的,不能对原标签中的文本进行修改。

方法三:复制整个<a>,然后去掉a标签的子标签,再用.text()获得所需文本。

$("#tidy").contents().filter(function(){
return this.nodeType == 3;
})[0].nodeValue = "The text you want to replace with"


评价:达到目标,能对原标签中的文本进行读写操作,但是nodeValue是js的属性。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息