2009-06-29 105 views
2

我有以下的HTML結構正在從一個AJAX請求返回......jQuery文檔操縱問題

<th scope="col" style="yada,yada,yada"> 
<a href="javascript:funcName();" style="yada,yada,yada"> 
Test<br />Heading</a></th> 
<th scope="col" style="yada,yada,yada"> 
<a href="javascript:funcName2();" style="yada,yada,yada"> 
Test<br />Heading2</a></th> 

而且我想操縱這個使最終的結果是...

<th>Test<br />Heading</th> 
<th>Test<br />Heading2</th> 

我基本上想要刪除內聯樣式,並從超鏈接中提取文本。我如何輕鬆地使用jQuery來做到這一點?

回答

4

假設$data上面的分析DOM結構...

$data.find('th').each(function() { 
    $(this).removeAttr('scope').removeAttr('style').html(
     $(this).find('a').html() 
    ); 
}).appendTo(selector); 
+1

沒有那麼容易!太棒了,謝謝。 – 2009-06-29 17:05:27

+1

有一點要補充。對於它的價值,我不必將其設置爲變量。我有這樣的一個變種:var tbl = $(xhr.responseText),我所要做的就是使用你的代碼來調用它是這樣的:tbl.find('th')。each(function(){etc .. 。}),後來我只是將tbl附加到一個元素上,它效果很好。 – 2009-06-29 17:09:53

0

這似乎是最簡單的方法是選擇出來的文字,然後用它來創建新的TH元素,它可以很容易做到在jQuery中。假設你的數據在可變命名的數據,你會想要做的事,如:

var newTH = ''; // To store as you go 
$("th a", data).each(function(){ // Loop over all anchors in THs 
    newTH += "<th>" + $(this).html() + "</th>"; // Pull out the innerHTML of the anchor, wrap in TH 
}); 

的newTH變量現在是HTML的一大塊,你可以使用jQuery追加到表的。

爲了速度的緣故,我建議先將它建立爲一個字符串。操縱和改變DOM元素的工作原理,但取決於你得到多少TH,理論上這應該快一些。