2014-12-24 47 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(''); 

两者都会在视觉上给出相同的结果。

相关问题