JQuery:在关闭的标记之间选择文本

JQuery:在关闭的标记之间选择文本,jquery,css-selectors,Jquery,Css Selectors,有人问过类似的问题,但还不够相似 鉴于这种结构: 这是第一点这是第二点 如何在关闭的标记之间选择文本?这是第一点 内容是通过JSON调用反馈的,所以我不能对他们给我的结构做太多的处理 谢谢 您可以使用.contents获得该值。在您的情况下,这将起作用: alert($(".text").contents().eq(2).text()) 你可以试试- console.log($('p').contents().filter(function() { return this.node

有人问过类似的问题,但还不够相似

鉴于这种结构:

这是第一点这是第二点

如何在关闭的标记之间选择文本?这是第一点

内容是通过JSON调用反馈的,所以我不能对他们给我的结构做太多的处理


谢谢

您可以使用.contents获得该值。在您的情况下,这将起作用:

alert($(".text").contents().eq(2).text())
你可以试试-

console.log($('p').contents().filter(function() {
    return this.nodeType == Node.TEXT_NODE;
}));
这是取自-。如链接问题中所述,该解决方案不适用于IE7,但链接问题中有详细的解决方法


工作演示-

这里有一个潜在的解决方案:

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);
演示:

可以将您的内容替换为更容易拆分的内容,然后对结果进行迭代

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 />");
    }
}

如果需要访问多个文本节点,可以使用以下命令将其全部提取到数组中:

var data = $(".text").contents().filter(function() {
    return this.nodeType == Node.TEXT_NODE && !this.nodeValue.match(/^\s*$/);
}).toArray();
现在,您可以使用数据[0].nodeValue访问这是点1,使用数据[1].nodeValue访问这是点2

工作小提琴:


注意:附加条件!this.nodeValue.match/^\s*$/过滤掉只包含空格的文本节点。

这是第二点如何?@BalusC-我也希望得到:p我非常确定这两个节点的方法都是相同的。虽然@Shawn Chin也有一个很好的解决方案,但我最终还是使用了这个解决方案。这对我来说更有效。