2014-12-24 72 views
-1

我的JavaScript的HTML字符串是:jQuery的從一個字符串中刪除選擇內容

<div> 
    <ul> 
     <li>1</li> 
     <li>2</li> 
     <li>3</li> 
    </ul> 
    <div id="header"></div> 
    <div id="innercontent"> 
     <div>this should be removed</div> 
    </div> 
    <div id="footer"></div> 
</div> 

我想結果是:

<div> 
    <ul> 
     <li>1</li> 
     <li>2</li> 
     <li>3</li> 
    </ul> 
    <div id="asd"></div> 
    <div id="innercontent"> 
    </div> 
    <div id="footer"></div> 
</div> 

我嘗試,我發現有這麼幾種方法,但所有的方法去除也#innercontent元素:

console.log($('#innercontent', content).remove().end().html()); 

我嘗試:

console.log($('#innercontent', content).children().remove().end().html()); 

但這並沒有給我預期的結果。它返回空字符串。

我需要單獨的字符串#innercontent html和html沒有#innercontent內容。怎麼樣? 我可以用$('#innercontent', content).html()獲得#innercontent內容,但是如何從整個內容中刪除此html?

我也嘗試與string.replace,但它不工作(不替代任何東西):

content = content.replace($('#innercontent', content).html(), ""); 

編輯:

我的內容對象是我的JavaScript的HTML字符串。

EDITED 2 很明顯,我應該寫我沒有在DOM(身體)或其他地方的這個HTML。我從阿賈克斯得到它。所以空虛不是我正在尋找的解決方案。 我需要innercontent和內容字符串進行進一步操作,然後將它們添加到DOM給不同的父母。

+0

是什麼'content'對象執行相同的任務?你不顯示它被定義。當你有一個ID你甚至不需要像你的內容一樣的上下文,只需使用ID選擇器......除非在頁面中有重複的ID,這是一個完全不同的場景 – charlietfl

+0

是DOM中的字符串?如果它在DOM中,它通常不被稱爲字符串。如果它不在DOM(頁面)中,那麼需要看看它來自哪裏 – charlietfl

+0

不,它是AJAX中的字符串,正如我在原始(編輯)文章中解釋的那樣。 – Makla

回答

1

對於通過AJAX

接到要刪除的數據元素的HTML數據使用AJAX你包在$()收到的HTML字符串,然後可以使用jQuery方法,就像它在DOM好評。

$.get('some/path/to/server/', function(data){ 
    /* create jQuery object with new html*/ 
    var $content = $(data); 
    /* empty content section by traversing from outer root*/ 
    $content.find('#innercontent').empty(); 
    /* insert new content object in DOM*/ 
    $('#someDivInDOM').append($content); 
}); 

由於沒有顯示ajax的問題​​,我用快捷鍵$.get。該princibles是相同的,如果使用低級別$.ajax只是在successdone回調

WORKING DEMO

+0

不知道爲什麼我從來不試試這個。我很尷尬,因爲我必須存在於DOM中。謝謝。我稍微編輯了你的帖子。 – Makla

+0

我拒絕了您的編輯,因爲它與問題中的html不匹配,並且在其中存在不必要的循環。記住這些問題在這裏住了好幾年,所以答案和問題之間的不匹配會導致混淆 – charlietfl

+0

不要感覺不好......不知道你可以在DOM之外做到這一點,它不一定是直覺的 – charlietfl

3

您可以使用empty()功能:

var remove = function() { 
 
    $('#innercontent').empty(); 
 
} 
 

 
$('#empty').click(function() { 
 
    remove(); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div> 
 
    <ul> 
 
     <li>1</li> 
 
     <li>2</li> 
 
     <li>3</li> 
 
    </ul> 
 
    <div id="header"></div> 
 
    <div id="innercontent"> 
 
     <div>this should be removed</div> 
 
    </div> 
 
    <div id="footer"></div> 
 
</div> 
 

 
<span id="empty" style="font-weight:bold;color:red;cursor:pointer">click to empty!</span>

0

試試這個:

$('#innercontent').empty(); 
0

使用jQuery的.empty()方法刪除選定元素的所有兒童。

$('#innercontent').empty(); 

使用.html('') jquery的方法是將innerHtml設置爲空字符串。

$('#innercontent').html(''); 

兩者都會在視覺上給出相同的結果。

相關問題