2010-04-24 75 views

回答

5
var elToRemove = $('your-element'); 
var children = elToRemove.children().detach(); 

elToRemove.replaceWith('<whatever id="something">Foo Bar</whatever>').append(children); 

注意,这实际上消除了父元素,并插入一个新的,所以如事件处理程序和数据的所有细节都将丢失的父,但保留对孩子。

+1

好,谢谢,但它给了我这个错误:“elToRemove.children()。detach不是一个函数”。 (另见下面的评论)。 – aneuryzm 2010-04-24 10:00:31

+0

你运行的是什么版本的jQuery?分离是在1.4版本中引入的,因为我的猜测是你使用的是过时的版本。 – Matt 2010-04-24 10:01:34

+0

是的..确实1.2.6我使用Drupal,这是内置的jQuery。我不知道如果我可以更新它,而不会在Drupal代码的其他部分出现问题 – aneuryzm 2010-04-24 11:02:06

2

我不确定我完全理解这个问题,但也许这是答案? ;-)

$('#replaceme').children().unwrap().wrap('<div id="new"></div>'); 

看到它在行动:http://jsbin.com/adene3/edit

文件:

+0

同样在这里:“$(”a.taxonomy-image-link-alter“)。children()。unwrap不是函数”。我相信jQuery的作品。我正在使用它与其他插件。 – aneuryzm 2010-04-24 09:59:55

+0

上面展开的文档(“添加版本:1.4”)。 jsbin演示也使用1.4。你正在运行哪个版本? – 2010-04-25 03:30:28

+0

如果#replaceme有多个孩子,则这不起作用。在这种情况下,你需要像@Matt在他的回答中描述的那样 – pgraham 2013-01-11 16:03:09