2014-01-11 39 views
0

我使用appendTo在DOM走動了幾個要素:的jQuery appendTo離開以前的父容器空白

jQuery('.footer-pre-home.box.s5,.footer-two.box.s5').appendTo('.footer .copyright'); 

這工作得很好。但是,當它們被刪除時,它們將在其前一個父節點「pre-footer」中留下一個空白字符。這阻止了我在前頁腳元素上使用css:empty psuedo類。

任何方法來解決這個appendTo?

原始的HTML低於:

<div class="pre-footer"> 
    <div class="footer-two box s5"> 
     <div class="textwidget"> 
      <ul class="social flat"> 
       <li class="twitter"><a href="http://twitter.com"></a></li> 
       <li class="facebook"><a href="http://facebook.com"></a></li> 
       <li class="google"><a href="http://plus.google.com"></a></li> 
       <li class="youtube"><a href="http://youtube.com"></a></li> 
       <li class="linkedin"><a href="http://linkedin.com"></a></li> 
       <li class="rssfeed"><a href="feed/"></a></li> 
      </ul> 
     </div> 
    </div> 
</div> 

的appendTo後,計算出的頁腳預HTML如下:

<div class="pre-footer"> 
</div> 

我不能刪除節點,因爲有可能是元素它內部不是appendTo的目標。但是,在這種情況下,不是。

回答

1

.appendTo只接受目標,它不會留下textNode,還有在你的元素textNode,而不是使用:empty選擇,你可以使用.filter()方法,檢查修整內容的長度:

var $empty = $(".footer .pre-footer").filter(function() { 
    return !$.trim(this.innerHTML).length;  
    // return $.trim(this.innerHTML) === ''; 
}); 
+0

我在控制檯中運行它,並返回undefined。我正在使用CSS來驗證:.footer .pre-footer:empty {display:none!important} –

+0

@ScottB嗯,我雖然使用jQuery':empty'選擇器,它不會刪除空格,它會過濾只有空格或沒有內容的元素。嘗試'$(「。pre-footer」)。filter(function(){ return!$。trim(this.innerHTML).length; })。hide();' – undefined

+0

+1是的,修改後的代碼和使用jQuery空vs CSS空。謝謝!我在想,你正在使用jQuery trim來刪除空白節點空白,以便CSS:空工作。 –