0

可能重复:
使用 jQuery 更改 HTML 标记?

我已经搜索了一段时间,但没有找到与我想要做的完全匹配的答案。我希望能够在不实际替换所有内容的情况下替换部分 html 标记。例如我的 HTML...

<a href="">Test</a>

我希望最终结果是这样的......

<test href="">Test</a>

我试过这个......但它只是取代了一切......

$("a").replaceWith("&lt;test");

这似乎也不起作用......

$("a").find().html("<a").replaceWith("&lt;test");

编辑:

我认为我的第一部分不是很清楚。我的最终目标是只替换标签的一部分……例如……

找到<a并替换为<test

...........

我觉得我正朝着正确的道路前进,但我不确定从这里去哪里。任何帮助深表感谢。谢谢。

4

2 回答 2

2

上帝只知道你为什么要将你的元素更改为甚至不接近有效 HTML 的东西,但这里是如何做到的:

(function($) {
    $.fn.changeElementType = function(newType) {
        var attrs = {};
        $.each(this[0].attributes, function(idx, attr) {
            attrs[attr.nodeName] = attr.nodeValue;
        });
        this.replaceWith(function() {
            return $("<" + newType + "/>", attrs).append($(this).contents());
        });
    };
})(jQuery);

$("a").changeElementType('test');

小提琴

从 Andrew Whitakers 那里偷来的答案

​</p>

于 2012-08-15T16:50:16.007 回答
2

这是使用.unwrap().wrap()的方法

$('a') // select the element
.contents()  //  traverse to contents
.unwrap()  // unwrap - remove parent tag - which happens to be the a
.wrap('<test href="">')  //  wrap contents with test tag

http://jsfiddle.net/wirey00/mVWfp/

于 2012-08-15T16:59:30.793 回答