2012-01-15 41 views
1

我試圖爲IE7添加一個條件語句與jQuery,但它不能動態工作(如果它是硬編碼它的工作,所以我知道這是與jQuery附加條件語句的實際「評論」的方式有關)。用jQuery插入IE條件語句(註釋)?

我正在使用的代碼是這樣的:

$("head").append("<!--[if IE 7]>"); 
$("head").append("<link>"); 
css = $("head").children(":last"); 
    css.attr({ 
    rel: "stylesheet", 
    type: "text/css", 
    href: "css/IE7.css" 
}); 
$("head").append("<![endif]-->"); 

我的想法是,這是關係到<>,也許就需要把這些url編碼?怎麼樣?

任何人都有一個解決方案,不涉及每個CSS屬性與jQuery(有幾十個CSS修復,所以這不會是一個解決方案)。

+1

有條件的註釋是一個* parse-time *事物。當你的jQuery代碼運行時,頁面已經被解析了,所以在這個階段考慮條件註釋是沒有意義的。這就像問你在烤麪包時如何攪拌麪團。 :-) – 2012-01-15 13:47:07

+0

@ T.J.Crowder感謝您的解釋,我非常專注於讓條件語句註釋工作,我沒有意識到它不會被解析爲常見的方式。 – jackJoe 2012-01-15 14:08:35

回答

4

你可以使用$.browser檢查瀏覽器版本,並採取相應的行動:

if ($.browser.msie && parseInt($.browser.version, 10) === 7) { 
    $('head').append('<link>', { 
     rel: 'stylesheet', 
     type: 'text/css', 
     href: 'css/IE7.css' 
    }); 
} 
+1

@jackJoe:或者更好,*不要擔心瀏覽器的特定版本。相反,擔心(和測試)*功能*:http://kangax.github.com/cft/但達林告訴你如何做到相同的事實上你問。 – 2012-01-15 13:48:26

+0

這是一個好主意,並解決了我的問題,我甚至沒有想到這一點。謝謝你的幫助。 – jackJoe 2012-01-15 14:06:54