2012-08-15 59 views
0

可能重複:
Use jQuery to change an HTML tag?如何用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

........

更換我覺得我正走在正確的道路上,但我不確定該從哪裏出發。任何幫助深表感謝。謝謝。

+0

只是出於好奇:爲什麼你需要做的是什麼? – 2012-08-15 16:50:07

+0

我正在構建一個語法高亮js文件。所以我希望能夠最終替換和包裝這樣的東西。 < a 2012-08-15 16:51:44

回答

2

只有上帝知道爲什麼你會改變你的元素融入一些is'nt甚至接近是有效的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'); 

FIDDLE

Stolen from Andrew Whitakers answer here on SO

+0

我不打算標籤實際上說「測試」,這只是一個例子。不過,謝謝你的回答。我會看看它,看看我能否使它與我正在做的事情一起工作。我注意到你的例子改變了結束標記,而我只想着現在只改變開始標記。但是,再次感謝您的回答,我會看看我是否能夠將其與我正在嘗試做的事情結合起來。 – 2012-08-15 16:54:38

+0

無法完成,或者它可能會但瀏覽器會自動關閉標籤。這裏有一個[FIDDLE](http://jsfiddle.net/Ed3Ck/1/),它只是改變html字符串,並且用'test'開始標記和一個'a'結束標記來放回,就像你想要的一樣,但是如果您檢查控制檯,瀏覽器可能會嘗試修復您的愚蠢行爲,並添加正確的標籤,並且以這種方式執行此操作,從而使元素失去與其相關的任何屬性。 – adeneo 2012-08-15 17:10:33

+0

你可以發表你的評論作爲答案,我會接受,作爲我的答案..謝謝 – 2012-08-15 17:14:39

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/

+0

那種做我想做的。不過,如果可能的話,我希望輸出是這樣的。 <測試...我想要做的是找到「 2012-08-15 17:07:54