在同一頁面上有兩個完整的DOM樹是沒有意義的,所以你需要提取出你想要的並且只用它。
將字符串到jQuery對象,並分析出你所需要的是這樣的:
var html = "<html><head><style>...</style></head>
<body><table>...</table></body></html>";
// Not sure if you are a trying to merge to DOMs together or just
// trying to place what you want on the page so, I'm going to go
// with the former as it may be more tricky.
var other_html = "<html><head><style>...</style></head>
<body><!-- some stuff --></body></html>";
var jq_html = $(html);
var jq_other_html = $(other_html);
var style = jq_html.find('head').find('style');
var table_and_stuff = jq_html.find('body').html();
jq_other_html.find('head').append(style).end().append(table_and_stuff);
這也許應該這樣做。一旦插入到頁面中,瀏覽器就會自動識別CSS。
注:
對於新的CSS樣式表只添加新的風格,而不是覆蓋當前的一個(或多個),您必須前插片的頭部標記,而不是追加它。所以,最後一行將需要是這樣,而不是:
jq_other_html.find('head').prepend(style).end().append(table_and_stuff);
謝謝,我已經得到了一些類似的工作。現在的問題是,將CSS樣式附加到主文檔的頭部可能會覆蓋主文檔元素正在使用的某些樣式。有沒有辦法解決這個問題? – Kaarel 2009-04-16 19:25:48
是的,你可以'預先'CSS(與我所描述的方式相同,但是用'prepend(style)'而不是'append(style)'。這樣,你現有的CSS將覆蓋新附加的CSS CSS,只有新的CSS表格提供的新東西纔會起作用。記住,CSS代表'Cascading Style Sheets'。意思是,任何最後列出的和最具體的都將被使用 – KyleFarris 2009-04-20 14:28:48
那麼,如果我加入頭部,那麼現有的主文檔中的樣式(現在最後)可能會覆蓋所包含位的樣式,因此向頭部添加任何東西都不是一個好的解決方案。理想情況下,包含的DOM樹的樣式應該是DOM樹的本地樣式,沒有其他樣式會影響包含的樹。這可能嗎? – Kaarel 2009-04-20 19:15:30