0

私は少しピクルスにいます。私が達成しようとしているのは、空の div IF を削除してから、後で必要なことを行うことです。これは簡単なことです。難しいのは、空のタグを削除しようとすることです。私は 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 of Problem with Solution <<<

ご挨拶;)

于 2013-03-07T04:00:26.150 に答える
-1

removeChild()関数があります。では、なぜ次のようなことができないのでしょうか。

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

(これはテストしていません)

于 2014-10-29T00:22:15.100 に答える
-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 に答える