[英]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());
});
});
我想一次选择ABCD
和XYZ
,类似LMNOP
即输出应为ABCDXYZ
和LMNOP
如何在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());
});
结果(与您预期的“ ABCDXYZ
和LMNOP
”相同):
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.