我有一个我正在研究的网站,它使用'旁边'标签,即使使用HTML5 Shiv,无论我尝试什么,我都无法读取IE8。所以,我想知道,你如何用jQuery用其他标签替换现有标签?
例如,如果我想改变
<aside>
<h3></h3>
</aside>
到
<div>
<h3></h3>
</div>
怎么做?
答案 0 :(得分:28)
试试这个:
$('aside').contents().unwrap().wrap('<div/>');
aside
的内容。unwrap
内容。wrap
新标记内的内容,此处为div
。此外,您可以使用.replaceWith()
方法执行此操作,例如:
$('aside').replaceWith(function () {
return $('<div/>', {
html: $(this).html()
});
});
答案 1 :(得分:6)
$('aside').replaceWith('<div><h3></h3></div>');
答案 2 :(得分:3)
这适用于文档中的每个元素,并保留内容。如果div
元素的内容中有换行符,则使用换行会导致出现许多aside
个元素。
$('aside').each(function() {
$(this).replaceWith("<div>"+$(this).html()+"</div>")
});
答案 3 :(得分:1)
这将完成这项工作:
$('aside').replaceWith( "<div>" + $('aside').html() + "</div>" );
同样使用.html()可以提供更加动态的方法。
答案 4 :(得分:1)
这是一个替代HTML5块标记的解决方案,保留了替换HTML5标记的div的样式。简单地替换标签会留下属性。
$('article, aside, figcaption, figure, footer, header, nav, section, source')
.each(function(){
var el = $(this),
html = el.html(),
attrs = {
"id": el.attr('id'),
"classes": el.attr('class'),
"styles": el.attr('style')
};
console.log('Replacing ' + el.prop('tagName') + ', classes: ' + attrs.classes);
el.replaceWith($('<div></div>').html(html).attr(attrs));
});
(可能需要对源标记做更多的工作,其中包含&#34; src&#34;和&#34;类型&#34;属性)