2013-02-16 49 views
0

我得到了一個奇怪的問題與jQuery。 我必須刪除身體的最後一個孩子才能使調整大小功能正常工作。 最後一個孩子是由twitter-social-plugin插入的div,已過時。:最後一個孩子刪除身體div

在我調整大小功能我想

$('body:last-child').remove(); 

文檔的結構如下

<body> 
     <div>here comes content and stuff</div> 
     </div>that´s the div to be removed</div> 
    </body> 

當調整大小功能被調用時,整個身體標記被刪除,我得到一個空白頁面。 調整大小功能:

$(document).ready(function() { 
       $(window).bind('resize', function() { 
        $('body:last-child').remove(); 
        contentStretch(); 
        function contentStretch() { 
         $('#content-stretch').css({ 
          height: "0" 
         }); 
         var page_height = $('#container').height(); 
         var window_height = $(window).height(); 
         var difference = window_height - page_height; 
         if (difference < 0) { 
          difference = 0; 
         }; 
         $('#content-stretch').css({ 
          height: difference + "px" 
         }); 
        }; 
       }); 
      }); 
+0

我們續給$(「最後一子體」)。孩子的身體標記是div,不需要你想要刪除的div – Gautam3164 2013-02-16 12:52:53

回答

0

嘗試這樣

$('div:last').remove(); 
+0

我們繼續給$(「body:last-child」)。remove(),因爲它不強制body標記的最後一個孩子是div並且不需要你想刪除的div – Gautam3164 2013-02-16 12:52:03

+0

感謝gautam,這工作正常,但由於調整大小的綁定,每個像素的窗口被調整大小最後的div將被刪除,直到頁面上的每個div被刪除,我有同樣的結果像以前一樣。我的嘗試是修改你的行像$('div:last:not(#container)')。remove();但最後#container將預先支付,其所有內容將不會被刪除 – Karl 2013-02-16 12:56:27

+0

Guffa有正確的解決方案。無論如何,感謝Gautam。 – Karl 2013-02-16 13:00:53

1

:last-child選擇是因爲它是貼在物品上的改性劑。所以你基本上是說刪除最後的body元素。

最簡單的變化,將使您的代碼工作,以刪除最後一個直接子body將是添加一個空間到選擇器。

$('body :last-child').remove();

然而,這是有點危險的,我建議是多一點具體的使用正是你要刪除的內容。例如,您可以將所有div元素設爲一個普通類,例如container。然後你也可以使用:last-of-type選擇器。這可以確保您將完全刪除您期望的內容,即使您的DOM結構的同一級別上有不同類型的其他元素也是如此。

$('.container:last-of-type').remove();

+0

感謝您澄清這一點,魯本 – Karl 2013-02-16 13:00:16

+0

我得到它應該像$('body> div:last-child:not(#container)')。每次調整大小時,內容都保留在每個像素上。 – Karl 2013-02-16 13:03:29

3

:last-child selector獲取是其父的最後一個子元素,它不看的元素中的最後一個孩子。 body元素是其父項的最後一個子項,因爲只有一個body元素。

要刪除最後一個div這是body元素的直接子:)刪除(因爲它不是compulsury的最後一個:

$('body > div:last-child').remove(); 
+0

Guffa,你做到了:-)我只需要像$('body> div:last-child:not(#container)')那樣修改你的行。去掉();由於事實上我們得到了一個bind-method運行,它會刪除每個resize-action每個像素的每個最後一個div。非常感謝 :-) – Karl 2013-02-16 12:59:41