动态切换 bootswatch 主题很容易完成,如最初引用的问题所示: 单击主题下拉菜单后如何动态更改主题
Meteor(在我的例子中加上铁路由器)通过事件映射和动态变化发生在<head>
.
另一个已回答的问题解释了如何直接在 jQuery 中处理事件(绕过 Meteor 事件映射): 如何在 Meteor 中处理自定义 jQuery 事件?
下面的代码片段显示了我如何将这两个想法结合在一起。这一切都按预期工作。
var themes = {
"default": "bootstrap311/css/bootstrap.default.min.css",
"readable" : "bootstrap311/css/bootstrap.readable.min.css",
"slate" : "bootstrap311/css/bootstrap.slate.min.css"
}
$(function(){
var themesheet = $('<link href="'+themes['default']+'" rel="stylesheet" />');
themesheet.appendTo('head');
$('body').on('click', '.theme-link', function (e) {
var themeurl = themes[$(this).attr('data-theme')];
themesheet.attr('href',themeurl);
});
});