我知道你可以这样做:
$('.document-content p:has(br)').next('p').addClass("newClass")
检查p
标记内是否有br
标记:
<p>
<br>
</p>
如何检查是否还存在 ANY 字符串?
<p>
"Some text"
<br>
</p>
(原因是,我想删除里面有字符串的br
标记内的所有p
。)
答案 0 :(得分:1)
您可以使用:contains
选择器:
$('.document-content contains("some text")').next('p').addClass("newClass")
如果要查找的字符串存储在变量中,则需要在选择器中连接它:
var searchString = 'some text';
$('.document-content contains("' + searchString + '")').next('p').addClass("newClass")
原因是,我想删除里面有字符串的
br
标记内的所有p
。
在这种情况下,您可以获取元素的text()
并用它覆盖html()
:
$('.document-content').html(function() {
return $(this).text();
});
或者
$('.document-content').html($('.document-content').text());
上述两种方法都可以使用,后者更短但是(IMO)更加丑陋,并提出另一个DOM请求。
答案 1 :(得分:0)
您可以执行类似https://jsfiddle.net/joL9xh2r/
的操作$('p').each(function(i,ele){
if($(ele).text().replace(/\s/g, '').length>0)
{
alert($(ele).attr('id')+' has string');
}
})
这里有两个段落,一个带有字符串,一个没有文字,你可以使用text()
检查段落是否包含一个字符串,现在你可以在if条件下做任何你想做的事情,它唯一真正的whan p
元素
现在,如果你想删除br标签,那么你可以这样做,
https://jsfiddle.net/joL9xh2r/1/
$(ele).html($(ele).text())
但是,请记住,这将删除里面的所有html标签,例如https://jsfiddle.net/joL9xh2r/2/, 你在这里
<p id='x'>
"Some text"
<br/>
<b>abc</b>
</p>
p
中的粗体标记,因此上述解决方案和rorry建议的解决方案也将删除b标记。
删除仅 br的最佳方式是
https://jsfiddle.net/joL9xh2r/3/
$('p').each(function(i,ele){
if($(ele).text().replace(/\s/g, '').length>0)
{
alert($(ele).attr('id')+' has string');
$(ele).find('br').remove();
}
})