按文本内容删除 <h3>
Remove <h3> by its text content
我正在尝试从 header 列表中删除一个 'h3' 标签,通过文本选择它。
例如,如果我有:
html:
<h3>NO CHANGE</h3>
<h3>h3 to be removed</h3>
<h3>NO CHANGE</h3>
<h3>NO CHANGE</h3>
<h3>NO CHANGE</h3>
jQuery:
var h3_text_remove = $('h3').text();
if (h3_text_remove == 'h3 to be removed'){
$('h3').remove();
//console.log (h3_text_remove);
}
如何只删除带有文本 'h3 to be removed' 的 header?
fiddle:
http://jsfiddle.net/q2nb08t6/7/
您可以使用 :contains()
选择器在一行中完成此操作:
$('h3:contains("h3 to be removed")').remove();
或使用变量:
var h3_text_remove = $('#specificH3').text();
$('h3:contains("' + h3_text_remove + '")').remove();
请注意,这将删除以任何方式包含该文本的所有 h3
个元素,因此以下两个元素都将被删除:
<h3>h3 to be removed</h3>
<h3>foo h3 to be removed bar</h3>
要将其限制为仅包含整个文本的元素,请使用 filter()
:
$('h3').filter(function() {
return $(this).text() == 'h3 to be removed';
}).remove()
您可以使用 contains() 选择器
$("h3:contains('h3 to be removed')").remove();
使用:
//If text can have leading or trailing spaces
$('h3').filter(function() {
return $(this).text().trim() == 'h3 to be removed';
}).remove();
//or if the text should match exactly:
$('h3').filter(function() {
return $(this).text() == 'h3 to be removed';
}).remove();
演示 1
$('h3').filter(function() {
return $(this).text().trim() == 'h3 to be removed';
})
.remove();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<h3>NO CHANGE</h3>
<h3>h3 to be removed</h3>
<h3>NO CHANGE</h3>
<h3>NO CHANGE</h3>
<h3>NO CHANGE</h3>
<h3>h3 to be removed </h3>
<h3> h3 to be removed</h3>
<h3>h3 to be removed xx</h3>
你可以使用这个解决方案:基本解决方案,很容易理解。
fiddle: http://jsfiddle.net/q2nb08t6/10/
$('h3').each(function(){
var h3_text_remove = $(this).text().trim();
if (h3_text_remove == 'h3 to be removed'){
$(this).remove();
}
});
如果您只想删除标签而不是内容
$('h3').each(function(){
var h3_text_remove = $(this).text().trim();
if (h3_text_remove == 'h3 to be removed'){
$(this).unwrap();
}
});
我正在尝试从 header 列表中删除一个 'h3' 标签,通过文本选择它。 例如,如果我有:
html:
<h3>NO CHANGE</h3>
<h3>h3 to be removed</h3>
<h3>NO CHANGE</h3>
<h3>NO CHANGE</h3>
<h3>NO CHANGE</h3>
jQuery:
var h3_text_remove = $('h3').text();
if (h3_text_remove == 'h3 to be removed'){
$('h3').remove();
//console.log (h3_text_remove);
}
如何只删除带有文本 'h3 to be removed' 的 header?
fiddle: http://jsfiddle.net/q2nb08t6/7/
您可以使用 :contains()
选择器在一行中完成此操作:
$('h3:contains("h3 to be removed")').remove();
或使用变量:
var h3_text_remove = $('#specificH3').text();
$('h3:contains("' + h3_text_remove + '")').remove();
请注意,这将删除以任何方式包含该文本的所有 h3
个元素,因此以下两个元素都将被删除:
<h3>h3 to be removed</h3>
<h3>foo h3 to be removed bar</h3>
要将其限制为仅包含整个文本的元素,请使用 filter()
:
$('h3').filter(function() {
return $(this).text() == 'h3 to be removed';
}).remove()
您可以使用 contains() 选择器
$("h3:contains('h3 to be removed')").remove();
使用:
//If text can have leading or trailing spaces
$('h3').filter(function() {
return $(this).text().trim() == 'h3 to be removed';
}).remove();
//or if the text should match exactly:
$('h3').filter(function() {
return $(this).text() == 'h3 to be removed';
}).remove();
演示 1
$('h3').filter(function() {
return $(this).text().trim() == 'h3 to be removed';
})
.remove();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<h3>NO CHANGE</h3>
<h3>h3 to be removed</h3>
<h3>NO CHANGE</h3>
<h3>NO CHANGE</h3>
<h3>NO CHANGE</h3>
<h3>h3 to be removed </h3>
<h3> h3 to be removed</h3>
<h3>h3 to be removed xx</h3>
你可以使用这个解决方案:基本解决方案,很容易理解。
fiddle: http://jsfiddle.net/q2nb08t6/10/
$('h3').each(function(){
var h3_text_remove = $(this).text().trim();
if (h3_text_remove == 'h3 to be removed'){
$(this).remove();
}
});
如果您只想删除标签而不是内容
$('h3').each(function(){
var h3_text_remove = $(this).text().trim();
if (h3_text_remove == 'h3 to be removed'){
$(this).unwrap();
}
});