使用jQuery检查html元素中是否存在任何字符串

时间:2015-02-12 08:11:30

标签: javascript jquery html

我知道你可以这样做:

$('.document-content p:has(br)').next('p').addClass("newClass")

检查p标记内是否有br标记:

<p>
<br>
</p>

如何检查是否还存在 ANY 字符串?

<p>
"Some text"
<br>
</p>

(原因是,我想删除里面有字符串的br标记内的所有p。)

2 个答案:

答案 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请求。

Example fiddle

答案 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();


    }
})