类似的问题已被问到,但不够相似!JQuery:选择封闭标签之间的文本
鉴于这种结构:
<p class="text"> <b>1</b>this is point one<b>2</b>this is point two<b>3</b> </p>
我怎么会选择关闭标签之间的文本?即“这是第一点”。
内容通过JSON调用反馈,所以我不能用他们给我的结构做很多事情。
谢谢!
类似的问题已被问到,但不够相似!JQuery:选择封闭标签之间的文本
鉴于这种结构:
<p class="text"> <b>1</b>this is point one<b>2</b>this is point two<b>3</b> </p>
我怎么会选择关闭标签之间的文本?即“这是第一点”。
内容通过JSON调用反馈,所以我不能用他们给我的结构做很多事情。
谢谢!
可以取代你<b>#</b>
的东西更容易拆就那么遍历结果
jQuery的:
var points = $('.text').html().replace(/<b>.<\/b>/g, ',').split(','),
$results = $('#results');
for (var i in points) {
if ($.trim(points[i]).length > 0) {
$results.html($results.html() + points[i] + "<br />");
}
}
尽管@ Shawn-Chin也有一个很好的解决方案,但我最终还是使用了这个解决方案。这对我来说更好。 – MadTurki
您可以使用.contents()获取该值。你的情况,这会工作:
alert($(".text").contents().eq(2).text())
你可以尝试 - How do I select text nodes with jQuery? -
console.log($('p').contents().filter(function() {
return this.nodeType == Node.TEXT_NODE;
}));
这是取自。正如链接问题所述,该解决方案不适用于IE7,但在链接问题中有详细的解决方法。
工作演示 - http://jsfiddle.net/E53HU/1/
这里有一个潜在的解决方案:
var nodes = $('p.text')[0].childNodes;
var results = [];
for (var i = 0; i < nodes.length; i++) {
if (nodes[i].nodeType == Node.TEXT_NODE) {
// support older browsers that do not have textContent
var text = nodes[i].textContent || nodes[i].innerText;
if ($.trim(text).length > 0) { // optional - push non-empty strings
results.push(text);
}
}
}
//console.log(results);
如果你需要一些文本节点的访问,您可以使用提取所有到一个数组:
var data = $(".text").contents().filter(function() {
return this.nodeType == Node.TEXT_NODE && !this.nodeValue.match(/^\s*$/);
}).toArray();
您现在可以访问“这是第一点一个”使用data[0].nodeValue
和“这是第二点”,使用data[1].nodeValue
。
工作小提琴:http://jsfiddle.net/jHhFS/
注:附加条件(!this.nodeValue.match(/^\s*$/)
)过滤掉仅包含空格的文本节点。
“这是第二点”怎么样? – BalusC
@BalusC - 我也想得到:P我很确定这个方法对于任何一个都是一样的。 – MadTurki