jq 怎么把span 标签 替换成a标签呢?

clipboard.png
如图,我要做一个ajax重新生成分页的,要把a换成span 把span 换成a ,应该怎么弄?

阅读 8.8k
3 个回答
$('.current').replaceWith('<a>a标签</a>');

2个方法。
1)粗狂的:

// 假设span的数目比a多,先备份少的,然后替换多的,然后在把备份替换回来。顺序不能错。
$('a').replaceWith(function(){
    return $("<a2 />", {html: $(this).html()});
});
$('span').replaceWith(function(){
    return $("<a />", {html: $(this).html()});
});
$('a2').replaceWith(function(){
    return $("<span />", {html: $(this).html()});
});

2) 细致的:

// 初始化的时候,给全部span跟a不同的class。然后,假设span的数目比a多, 从最多的开始替换。顺序不能错。

$('span.spanClassName').replaceWith(function(){
    return $("<a />", {html: $(this).html(), class:$(this).attr('class')});
});

$('a.aClassName').replaceWith(function(){
    return $("<span />", {html: $(this).html(), class:$(this).attr('class')});
});

前面两位说得很多了我补充一下题外话:
刷新 dom 树开销是比较大的,如果你只是想切换状态完全可以全部用a 标签切换 class 来实现同样的效果,这样就避免了大量的无谓 dom 结点刷新。
至于通过样式把 a 标签搞成一个 span 的样子简直太简单了,控制其点击行为的方法也很简单。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题