2013-06-12 24 views
3

我有這樣的jQuery代碼:目標jQuery中@import沒有ID,沒有其他屬性

$(document).ready(function() { 

    function adjustStyle(width) { 
     width = parseInt(width); 
     if (width < 701) { 
      $(('style[type="text/css"]).attr([href=*400*]')).text('@import url("css/styles_400.css");'); 
     } else if ((width >= 701) && (width < 900)) { 
      $(('style[type="text/css"].attr([href=*400*]')).text('@import url("css/styles_800.css");'); 
     } else { 
      $(('style[type="text/css"].attr([href=*400*]')).text('@import url("css/styles_normal.css");'); 
     } 
    } 

    $(function() { 
     adjustStyle($(this).width()); 
     $(window).resize(function() { 
      adjustStyle($(this).width()); 
     }); 
    }); 
}); 

這是一個styleswitcher。 I get this code from here,但我修改了一點,因爲我所做的webportal會合並服務器中的所有css,所以我必須@import樣式表才能只定位一個css並正確更改它。

我不能給出一個標題或ID爲導入CSS(它是動態的),我試圖在上面的代碼,因爲我唯一的代碼是:

<style type="text/css">@import url('css/styles_400.css');</style> 

正如你看到的,唯一的線索我有網址。

我該如何定位這個CSS?我在jQuery中的技能很少,而且我非常確定我的代碼有問題......但找不到適合它的目標方法。

爲什麼我使用這個舊的styleswitcher而不是mediaqueries?因爲我需要IE7 (客戶需求 - 我確定他們在週六狩獵猛獁象),他們不喜歡respond.js和css3-mediaqueries,因爲在Plone中造成奇怪的錯誤。

+0

如果目的是改變基於瀏覽器的樣式寬度純使用[媒體查詢](https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Media_queries)的CSS解決方案將是更好的選擇。 –

+0

哦,是的,我忘記了......我不能使用媒體查詢...我會更新這個問題;) – Arkana

+1

「客戶要求 - 我確定他們在週六狩獵猛獁象」我實際上大聲笑了起來。 –

回答

1

最後,玩幾個小時後左右,我找到一個解決方案:

$(文件)。就緒(函數(){

function adjustStyle(width) { 
    width = parseInt(width); 
    if (width < 701) { 
     $('style:contains("styles")').text('@import url("css/styles_400.css");'); 
    } else if ((width >= 701) && (width < 900)) { 
     $('style:contains("styles")').text('@import url("css/styles_800.css");'); 
    } else { 
     $('style:contains("styles")').text('@import url("css/styles_normal.css");'); 
    } 
} 

$(function() { 
    adjustStyle($(this).width()); 
    $(window).resize(function() { 
     adjustStyle($(this).width()); 
    }); 
}); 

});

它類似於jk。代碼,我刪除了.html方法,因爲那樣,我無法正確定位CSS,但是所有@import CSS都是。

而且,我已經改變了關鍵字,因爲當頁面加載「styles_800」沒有「400' 」串別處....

1

這給一個鏡頭:

更新:

$(document).ready(function() { 

    function adjustStyle(width) { 
     width = parseInt(width, 10); 
     if (width < 701) { 
      $('style:contains("400")').empty().html('@import url("/css/style_400.css");'); 
     } else if ((width >= 701) && (width < 900)) { 
      $('style:contains("400")').empty().html('@import url("css/styles_800.css");'); 
     } else { 
      $('style:contains("400")').empty().html('@import url("css/styles_normal.css");'); 
     } 
    } 

    $(function() { 
     adjustStyle($(window).width()); 
     $(window).resize(function() { 
      adjustStyle($(this).width()); 
     }); 
    }); 
}); 

小提琴:http://jsfiddle.net/XLkRN/3/

調整大小可能是在撥弄有點靠不住。如果在頁面上多次調整大小,可以將其放入超時。關於網絡的許多建議。

+0

謝謝,但實際上Plone的限制不允許我使用「標題」attr :(我需要的東西,我想,它的目標是通過URL的URL,通配符或其他東西,因爲我在我的嘗試代碼...我已經刪除了問題中的標題,因爲它沒有意義。 – Arkana

+0

@Arkana答案更新。小提示更新。 –

+0

我測試了這個代碼。問題是我們有兩個或三個CSS和@import方法。當我應用你的代碼時,新的樣式會覆蓋所有這些CSS,不僅僅是「styles_400」... – Arkana

相關問題