2012-02-04 78 views
5

對不起,真正愚蠢的問題。但它不會以任何方式工作。如何從元素中排除其他元素的html()?

<html> 
<head> 
<script src='js/jquery.js' type='text/javascript'></script> 
<script type='text/javascript'> 
    $(document).ready(function() { 
    var htmlcontent = $('.content').not('.dontgrab').html(); 
    alert(htmlcontent); // returns EVERYTHING 
    }); 
</script> 
</head> 
<body> 
<div class='content'> 
    BEFORE 
    <div class='dontgrab'>DON'T GRAB</div> 
    AFTER 
</div> 
</body> 
</html> 

試過$(「。content *:not('。dontgrab')」)。html(); //返回NULL

請幫忙。

謝謝。

+0

@DavidRodrigues:nope。已經嘗試過。 – 2012-02-04 23:02:15

+0

謝謝你們。我想這將是很容易刪除()元素,然後重新創建它。 – 2012-02-04 23:48:31

回答

10

這應做到:

var clone = $('div.content').clone(); 
clone.find('.dontgrab').remove(); 

var html = clone.html(); 
+0

這會從文檔中移除.dontgrab元素嗎?我需要保持它! – 2012-02-04 23:00:39

+0

您將克隆它(暫時),您將只從克隆中刪除,而不是從文檔中刪除。 – 2012-02-04 23:01:44

+0

還有其他方法嗎?似乎是一個額外的編碼。 =) – 2012-02-04 23:03:27

-1

我認爲你正在嘗試做的:

var htmlcontent = $('.content').remove(".dontgrab").html(); 

你可以使用。不能(),如果情況像:

var htmlcontent = $('div').not(".dontgrab").html(); 

<body> 
<div class="content"> 
    BEFORE 

    AFTER 
</div> 
<div class="content dontgrab">DON'T GRAB</div> 
</body> 

我不認爲你可以使用.not爲選定的元素的孩子。我希望它可以幫助