0

我有点苦恼。我想要实现的是删除一个 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

我已经尝试了很多选项来尝试删除标签,但我没有这样的运气:(请帮忙!

4

4 回答 4

2

就您的container2test块而言,请尝试使用.text()而不是.html(). 这将忽略插入的空标签并仅关注文本内容。

关于它上面的部分,我不太确定你想要实现什么。如果您实施我前面提到的更改,我认为不需要它。

于 2013-03-07T03:42:24.937 回答
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...');
    }
});

>>>解决问题的 JS-Fiddle <<<

问候 ;)

于 2013-03-07T04:00:26.150 回答
-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
}
于 2013-03-07T03:59:31.420 回答
-1

有一个removeChild()函数。那么为什么你不能做这样的事情:

$('div').each(function(){
   if(this.innerHTML == ''){
      this.parentNode.removechild(this);
   }
});

(没有测试过这个)

于 2014-10-29T00:22:15.100 回答