繁体   English   中英

解析jQuery中的html字符串

[英]parse html string in jquery

如何解析jquery中的HTML字符串?

我有两种类型的html标签,我想从这些标签中获取文本

我无法为以下给定的html字符串选择标签

html在这里

<p>
    <b><span>22:00</span></b>
    <span>
        <span>
            <b>ABCD</b>
        </span>
        <b> XYZ</b>
</span>
</p>
<p>
    <b><span >06:00</span></b>
    <span>
        <b>LMNOP</b> 
    </span>
</p>

和jQuery代码

$(html).each(function() {
    $(this).find('p').each(function() {
        $(this).find('b span').eq(0).each(function() {
        });

        $(this).find('span b').eq(0).each(function() {
            console.log($(this).text());
        }); 
    });

我想一次选择ABCDXYZ ,类似LMNOP

即输出应为ABCDXYZLMNOP

如何在jQuery中选择它?

您可以使用filter()来检查所选元素b标记是否不包含任何子元素。 尝试这个:

var $html = $("<p><b><span>22:00</span></b><span><span><b>ABCD</b></span><b> XYZ</b></span></p><p><b><span >06:00</span></b><span><b>LMNOP</b> </span></p>");

var $b = $html.find('b').filter(function() {
    return $(this).children().length == 0;
}).each(function() {
    console.log($(this).text());  
});

小提琴的例子

我再次查看了您的尝试和预期结果,并认为我实际上已经确定了您要执行的操作:

小提琴

$(html).find('p').each(function () {
    console.log($(this).find('span b').text());
});

结果(与您预期的“ ABCDXYZLMNOP ”相同):

ABCDXYZ
LMNOP

仅基于提供的HTML 字符串尝试

$(html).each(function(){
    console.log( $('span b', this).text() );
});

输出:

ABCD XYZ
LMNOP 

证明: http //fiddle.jshell.net/mScSv/

使用$(html)我将HTML字符串转换为有效的jQuery对象。 在这种情况下,字符串中有两个根元素,位于段p因此我可以直接针对它运行每个元素。

注意输出中的空格,因为HTML中有相同的空格。

<script type="text/javascript">
        /*
        here I assumed that the <b> tag contains alpha numeric characters or space
        for other characters regular expression should be changed.
        */
        var arr = $('body').html().match(/\<b\>[\sA-z0-9]*\<\/b\>/gi);
        var output = Array();
        var temp = '';
        for (i = 0; i < arr.length; i++) {
            var str = arr[i].replace('<b>', '');
            str = str.replace('</b>', '');
            temp += str;
            if (i % 2 != 0) {
                output.push(temp);
                temp = '';
            }
        }
        if (i % 2 != 0) {
            output.push(temp);
        }
        //the array output stores the required result
        for (item in output) {
            document.write(output[item] + '<br>');
        }

    </script> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM