当年话下
这里有一个扩展,可以用同样多的方式完成所有的任务.示例用法:保留现有的类和属性:$('div#change').replaceTag('<span>', true);或丢弃现有类和属性:$('div#change').replaceTag('<span class=newclass>', false);甚至将所有div替换为span、复制类和属性,添加额外的类名。$('div').replaceTag($('<span>').addClass('wasDiv'), true);插件来源:$.extend({
replaceTag: function (currentElem, newTagObj, keepProps) {
var $currentElem = $(currentElem);
var i, $newTag = $(newTagObj).clone();
if (keepProps) {//{{{
newTag = $newTag[0];
newTag.className = currentElem.className;
$.extend(newTag.classList, currentElem.classList);
$.extend(newTag.attributes, currentElem.attributes);
}//}}}
$currentElem.wrapAll($newTag);
$currentElem.contents().unwrap();
// return node; (Error spotted by Frank van Luijn)
return this; // Suggested by ColeLawrence
}});$.fn.extend({
replaceTag: function (newTagObj, keepProps) {
// "return" suggested by ColeLawrence
return this.each(function() {
jQuery.replaceTag(this, newTagObj, keepProps);
});
}});