如何使用javascript删除标签?

时间:2013-03-07 03:39:08

标签: javascript dom dotnetnuke

我有点腌渍。我想要实现的是删除一个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 个答案:

答案 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未对此进行测试)