我有点腌渍。我想要实现的是删除一个div,如果它是空的,然后做我以后要做的事情,这很容易。困难的部分是试图删除空标签。我正在使用DNN,它喜欢放入像p和br这样的空标签。我想在执行检查之前删除它们。这是我到目前为止的代码
$(document).ready(function(){
var element = document.getElementsByTagName("p"); //Need to remove all tags. not just P
element.parentNode.removeChild(element); //Doesn't target which child
if( !$.trim( $('#container2Test').html() ).length ) {
alert("empty");
$('#container2Test').remove();
$('#container3Test').css({'width' : '50%', 'background-color' : '#3F0'});
$('#container3Test').append("This is some content");
}
else{
alert("not empty");
}
});
html:
<div id="container1Test" style="width:30%; height:10em; background-color:#000;">
</div>
<div id="container2Test" style="width:50%; height:10em; background-color:#666;">
<p></p><br /><p></p>
</div>
<div id="container3Test" style="width:20%; height:10em; background-color:#F66;">
</div>
</html
我尝试过很多选项来尝试删除标签,但我没有运气:(请帮帮忙!
答案 0 :(得分:2)
就container2test
阻止而言,请尝试使用.text()
代替.html()
。这将忽略插入的空标记,并仅关注文本内容。
关于它上面的部分,我不太确定你想要实现的目标。如果您实施我之前提到的更改,我认为不需要它。
答案 1 :(得分:1)
我认为这将是您需要的解决方案......请查看:
var elmsToClear = $('#container1Test, #container2Test, #container3Test');
elmsToClear.each(function(){
while($(this).find('*:empty').remove().length); // recursivly kill all empty elements
if(!$(this).find('*').length){ // if no elements left - kill the parent
alert($(this).attr('id') + ' is empty...');
$(this).remove();
}
else{ // there is something in here...
alert($(this).attr('id') + ' is NOT empty...');
}
});
&GT;&GT;&GT; The JS-Fiddle of the Problem with Solution&lt;&lt;&lt;
问候;)
答案 2 :(得分:-1)
请注意getElementsByTagName
是复数:
var elements = document.getElementsByTagName("p");
for (var n=0; n < elements.length; n++) {
var element = elements[n];
element.parentNode.removeChild(element); // should work now
}
答案 3 :(得分:-1)
有一个removeChild()功能。那你为什么不能做这样的事情呢?
$('div').each(function(){
if(this.innerHTML == ''){
this.parentNode.removechild(this);
}
});
(Haven未对此进行测试)