2009-09-29 31 views
3

我有此位的HTML代码:如何“解开”标签?

<center><table><tr><td>table</td></tr></table></center> 

我怎样才能解开表从<center>

对不起,林不知道,甚至如何下手。

非常感谢

+0

我不确定你的问题是什么? – 2009-09-29 11:36:24

+0

“解开”是什么意思?提取文本? – NawaMan 2009-09-29 11:38:20

+0

你的意思是删除'

'标签,让孩子的内容保持完好? – 2009-09-29 11:54:26

回答

3

该功能的工作就好了;

jQuery.fn.unwrap = function (el) { 
    return this.each(function(){ 
     $(this.childNodes).appendTo(this.parentNode); 
    }); 
}; 
5

我宁愿要完全摆脱中心标签或一些DIV替换它。中心标签不包裹任何东西。有任何想法吗?

它没有被包裹在任何东西?然后将它包裹在某物当中!

var $center = $('center'); 
var $newReplacement = $("<div></div>"); 

$center.wrap($newReplacement); 
$newReplacement.html($center.html()); 

或者:

var $center = $("center"); 
$("<div></div>") 
    .insertBefore($center) 
    .html($center.html()) 
; 
$center.remove(); 

再次,但这次不失事件:

var $contents = $("center > *") 
    .clone(true) // not sure if this is needed 
    .appendTo(
     $("<div></div>").insertBefore("center") 
    ) 
; 
$("center").remove(); 
+0

我喜欢第二个更好 - 但你不需要将新的DIV分配给一个变量。 – tvanfosson 2009-09-29 11:55:35

+1

通过使用html(),你将失去事件等 – svinto 2009-09-29 11:56:16

3
var $table = $("center table"); 
var $center = $table.parent(); 
$table.insertBefore($center); 
$center.remove(); 
+0

这个解决方案比改变HTML或像nickf这样的克隆工具的速度要快 – jantimon 2009-10-15 10:25:17

1

为了避免新的变量或函数,我通常会“解包”是这样的:

$("center").each(function(){ 
     $(this).replaceWith($(this).html()); 
    }); 

我打电话。每次与annonymous功能得到$(本)

手柄

在你的情况,如果你有你的页面上有多个中心的标签,你也想标记要与id属性拆卸和像这样选择它的一个:

$("#zapthis").each(...