我有一个HTML:jQuery的:如何获得唯一的直接文本没有标签(在HTML)
<strong>1)</strong>TEXT THAT I ONLY NEED<p>some par</p><ul>..</ul>
我只需要“文本我只需要”未在withing任何标签他的HTML,我怎样才能得到它与jQuery?
谢谢。
我有一个HTML:jQuery的:如何获得唯一的直接文本没有标签(在HTML)
<strong>1)</strong>TEXT THAT I ONLY NEED<p>some par</p><ul>..</ul>
我只需要“文本我只需要”未在withing任何标签他的HTML,我怎样才能得到它与jQuery?
谢谢。
好,如果你使用jQuery,你会做
$('.selector').text();
编辑:我刚才看到你想,是不是在任何标签的文本 - 嗯,这是不能直接(实际上是,HTML文档中的每个文本都在一些HTML标签内。)
在这种情况下,我会尝试更改标记(最简单的方法),以便所需的文本位于html标记内。 如果这是不可能的,你可以使用上面提到的text()
方法从父元素中获取整个文本,并且在你不得不减去你不想要的部分之后。
看到http://jsfiddle.net/3SSAR/1/有关如何减去字符串的例子..
只记得使用substr
,而不是-
减去字符串在javascript
这将返回“1)TEXT,我只需要一些参数”。 http://jsfiddle.net/3SSAR/ – 2011-12-24 12:51:22
它将返回所有嵌套标记 – WHITECOLOR 2011-12-24 12:52:50
中的所有文本,请参阅我的编辑 – tmaximini 2011-12-24 12:53:09
您的标记是不是最大的这一点。如果包裹文本,你想用一个跨度,如:
<span class="gettext">TEXT THAT I NEED</span>
你可以在jQuery中使用$('.gettext').text();
。
它不是我的标记我需要解析它 – WHITECOLOR 2011-12-24 12:52:07
对不起,我没有意识到,我你不能改变它。在这种情况下,我会建议像坦率的暴雪编辑的答案上面 – isNaN1247 2011-12-24 13:19:07
这很棘手,因为文本位于文本节点中,jQuery不支持文本节点,仅支持元素。另外,因为不同的浏览器以不同的方式处理HTML代码中的空白区域,所以最终会在不同的浏览器中使用不同的节点集合。您不能只获取节点,并依赖于所需的文本节点始终处于相同索引。
您可以使用jQuery来定位元素,并使用DOM来获取其中的所有节点。
示例HTML:
<div id="test">
<strong>1)</strong>
TEXT THAT I ONLY NEED
<p>some par</p>
<ul>
<li>asdf</li>
<li>qwerty</li>
</ul>
</div>
使用jQuery找到DIV,使用[0]
得到的DOM元素了jQuery对象,而childNodes
属性来获取其子:
var nodes = $('#test')[0].childNodes;
然后,您可以使用jQuery循环遍历节点以找到strong
元素的节点:
var index;
$.each(nodes, function(i,e){
if (e.tagName == 'STRONG') {
index = i;
return false;
}
});
现在你可以使用DOM从下一个节点获取文本值:
var text = nodes[index + 1].nodeValue;
谢谢,鳕鱼:.clone()。children(“strong,p,ul”)。remove().end().text()需要 – WHITECOLOR 2011-12-24 15:49:40
@WHITECOLOR:该代码将连接元素中的所有文本节点,因此它依赖于您没有更多文本或子元素之间存在任何换行符。 – Guffa 2011-12-24 16:04:32
此代码的工作对我来说:
var el = $("<div/>");
el.html(text).children().remove();
return el.text();
最好的办法是到.clone()
你的对象,.remove()
所有其.children()
,然后回到使用.end()
对象,最后得到.text()
。
该方法描述于this blog post。
$("strong")
.clone() //clone the element
.children() //select all the children
.remove() //remove all the children
.end() //again go back to selected element
.text(); //get the text of element
你[答案率(http://meta.stackexchange.com/questions/16721/how-does-accept-rate-work)是相当低的,你应该看看,以纪念的问题,你的答案有人问(即使这意味着标记你自己的答案)。 – isNaN1247 2011-12-24 12:49:38
可能重复的[jQuery:使用.text()检索仅嵌入子标签中的文本](http://stackoverflow.com/questions/3442394/jquery-using-text-to-retrieve-only-text-not -In-child-tags) – 4imble 2015-02-04 09:12:53