如果h1已在同一页面的另一个区域中使用,我正尝试从页面动态删除h1。例如,如果h1位于页面顶部的横幅中,则在同一页面下方的任何区域都不需要它。
<div class="banner">
<h1>Check to see if title here</h1>
</div>
<div id="rest_of_page">
<h1>Remove this h1 if the above h1 exists already</h1>
</div>
尝试过几件事,但他们似乎删除了两个h1标签,而不仅仅是顶部标签,如果顶部标签存在的话。可能有一些页面没有使用横幅,因此下面的h1需要保留。
答案 0 :(得分:1)
您可以切换第二个横幅:
$(function() {
$("#rest_of_page>h1").toggle(
$(".banner>h1").length==0
)
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<div class="banner">
<h1>Check to see if title here</h1>
</div>
<div id="rest_of_page">
<h1>Remove this h1 if the above h1 exists already</h1>
</div>
或删除它
$(function() {
if ($(".banner>h1").length>0) $("#rest_of_page>h1").remove();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<div class="banner">
<h1>Check to see if title here</h1>
</div>
<div id="rest_of_page">
<h1>Remove this h1 if the above h1 exists already</h1>
</div>
答案 1 :(得分:0)
List<Guid>
答案 2 :(得分:0)
这很容易。您必须使用.find()
$(document).ready(function(){
if($('.banner').find('h1').length > 0) {
$('.rest_of_page').find('h1').remove();
}
});
答案 3 :(得分:0)
使用香草js的解决方案 - 首先使用querySelectAll获取所有h1, 如果它超过1 h1,则迭代h1数组并移除evrey h1但第一个。
var h1 = document.querySelectorAll('h1');
if (h1.length > 1) {
for (var i=1; i< h1.lenght; i++){
h1[i].parentElement.removeChild(h1[i])
}
}
答案 4 :(得分:0)
首先检查jQuery对象$('.banner h1').length
的长度,如果为true,则使用以下代码删除所有剩余的h1
:
heading = $('.banner h1');
if(heading.length) {
$('h1').not(heading).remove();
}
heading = $('.banner h1');
if(heading.length) {
$('h1').not(heading).remove();
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="banner">
<h1>Check to see if title here</h1>
</div>
<div id="rest_of_page">
<h1>Remove this h1 if the above h1 exists already</h1>
</div>
<h1>Remove this h1 if the above h1 exists already</h1>
答案 5 :(得分:0)
一种方法是检索所有H1
个节点并迭代它们,删除除第一个节点之外的所有节点。这是有效的,因为jQuery
以文档顺序(也就是从上到下)返回匹配的元素。
$("h1").each(function(index, elem) {
if (index > 0) {
$(elem).remove();
}
});
答案 6 :(得分:0)
没有jQuery的解决方案
您可以使用document.getElementsByTagName('h1')
按标记查询每个h1元素,然后使用remove
删除第一个元素之后的每个元素。
var elems = document.getElementsByTagName('h1');
Object.keys(elems).forEach(function(key, i) {
if (i > 0) {
elems[key].remove();
}
});
答案 7 :(得分:0)
以下是一个jquery代码,如果您遇到上述情况,可以解决您的问题。
$("h1")[$("h1").length-1].remove();
要删除页面中除第一个以外的多个h1元素,您可以使用以下jquery代码。
$("h1").each(function(e){
if(e>0){
$(this).remove();
}
});
答案 8 :(得分:0)
在jquery中使用.has()
。如果你动态添加dom内容意味着你需要从dom元素的顶部遍历。
将匹配元素集减少到具有后代的元素集 与选择器或DOM元素匹配。
$('.banner').has('h1').parents('body').find('h1:not(.banner h1)').remove();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="banner">
<h1>Check to see if title here</h1>
</div>
<div id="rest_of_page">
<h1>Remove this h1 if the above h1 exists already</h1>
</div>
答案 9 :(得分:0)
$(function() {
var cnt=0;
$('h1').replaceWith(function(){
if (cnt++)
return $("<div>").append($(this).contents());
else
return $("<h1>").append($(this).contents());
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<h1>header1</h1>
<h1>header2</h1>
<h1>header3</h1>