单击主题下拉菜单后如何动态更改主题

Fer*_*bin 30 twitter-bootstrap bootswatch

我正在使用bootstrap作为我正在开发的网站的界面.我还计划将bootswatch主题集成到我的网站.我创建了一个包含bootswatch不同主题的下拉菜单.我的问题是当我点击下拉菜单中的一个主题时如何切换主题?

Kev*_*Pei 59

小提琴:http ://jsfiddle.net/82AsF/(单击导航栏中的主题下拉列表)为
链接提供类theme-linkdata-theme主题名称的值,如下所示:

<a href="#" data-theme="amelia" class="theme-link">Amelia</a>
Run Code Online (Sandbox Code Playgroud)

然后,在全局变量中定义您的主题,如下所示:

var themes = {
    "default": "//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css",
    "amelia" : "//bootswatch.com/amelia/bootstrap.min.css",
    "cerulean" : "//bootswatch.com/cerulean/bootstrap.min.css",
    "cosmo" : "//bootswatch.com/cosmo/bootstrap.min.css",
    "cyborg" : "//bootswatch.com/cyborg/bootstrap.min.css",
    "flatly" : "//bootswatch.com/flatly/bootstrap.min.css",
    "journal" : "//bootswatch.com/journal/bootstrap.min.css",
    "readable" : "//bootswatch.com/readable/bootstrap.min.css",
    "simplex" : "//bootswatch.com/simplex/bootstrap.min.css",
    "slate" : "//bootswatch.com/slate/bootstrap.min.css",
    "spacelab" : "//bootswatch.com/spacelab/bootstrap.min.css",
    "united" : "//bootswatch.com/united/bootstrap.min.css"
}
Run Code Online (Sandbox Code Playgroud)

(当你这样做时,请在你自己的服务器上托管这些bootswatch css文件 - 我只是在进行热链接,因为我手头没有服务器)
然后,使用以下jQuery代码:

$(function(){
   var themesheet = $('<link href="'+themes['default']+'" rel="stylesheet" />');
    themesheet.appendTo('head');
    $('.theme-link').click(function(){
       var themeurl = themes[$(this).attr('data-theme')]; 
        themesheet.attr('href',themeurl);
    });
});
Run Code Online (Sandbox Code Playgroud)