2014-03-25 26 views
1

這是一個奇怪的要求。我正在使用jQuery獲取AJAX請求的一些完整頁面的html內容。一旦我在對象var中捕獲了內容,我想抓取捕獲的內容的body標籤類,並用它替換當前的DOM body類。body tag class ReGex

由於內容位於var中並且未加載到DOM,所以jQuery對它沒有用處。我能想到的最好的工具是Regex。

我已經在網上找了幾個小時,什麼都沒發現。

這是我能拿出最好的代碼,但它不工作...

var data = '<html class="please_god_no" id="shit"><body id="id_no" class="test22">test2 class="test1" "test3"<div id="bad" class="test5 test6">test4</div> </body></html>'; 
var arr = data.match(/<body class=("[\w\d]*")\sid=("[\w\d]*")>([\w\d]*)</body>/); 
alert(arr); 

我只想類我不需要或不想要任何其他屬性。如何找到答案的任何幫助將是最有幫助的。

+0

正則表達式可能因爲'/ body'中的'/'而失敗 - 您是否使用'\/body'嘗試過? –

+0

錯誤...不行。返回null; – user1837550

回答

3

呵呵,這比我想象的要困難,事實上在處理body/html元素時會變得棘手。人們需要應對創建html元素,像這樣:

var s = '<html class="please_god_no"><body id="id_no" class="test22">test2 class="test1" "test3"<div id="bad" class="test5 test6">test4</div> </body></html>'; 
var htmlObject = document.createElement('html'); 
htmlObject.innerHTML = s; 
var klass = htmlObject.querySelector("body").className; 
document.querySelector('body').className = klass; 

JSFiddle example here

這是非常耗時的。可能有更好的方法來做到這一點,你爲什麼不用你想要的類來渲染body?否則,爲什麼你不能只通過AJAX檢索你想要的類?考慮在未來版本中重構您的應用。

+0

當內容中有''和''而且他們想要的類是''時,這實際上會起作用嗎? – jfriend00

+0

@ jfriend00如果你能想出一個不起作用的例子,我會解決上述問題。 – SomeKittens

+0

我想我問你是否真的嘗試過嗎? – jfriend00

相關問題