Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 如何使此样式表与cookie一起工作_Jquery_Stylesheet - Fatal编程技术网

Jquery 如何使此样式表与cookie一起工作

Jquery 如何使此样式表与cookie一起工作,jquery,stylesheet,Jquery,Stylesheet,我找到了重新调整插件。我简化了插件以满足我的需要。它很好用。我有一个带有数字选项值的下拉选择列表来选择样式表。但是我需要为每种风格设置一个cookie。cookie已创建,但无法保留cookie。以下是修改后的插件: ;(function($) { $.fn.extend({ retheme: function(options,callback) { options = $.extend( {}, $.Retheme.defaults,

我找到了重新调整插件。我简化了插件以满足我的需要。它很好用。我有一个带有数字选项值的下拉选择列表来选择样式表。但是我需要为每种风格设置一个cookie。cookie已创建,但无法保留cookie。以下是修改后的插件:

    ;(function($) {

    $.fn.extend({
        retheme: function(options,callback) {
            options = $.extend( {}, $.Retheme.defaults, options );

            this.each(function() {
                new $.Retheme(this,options,callback);
            });
            return this;
        }
    });

    $.Retheme = function( ctl, options, callback ) {
        if (options.styleSheet.match(/^\w/)) {
            options.styleSheet = '#' + options.styleSheet;
        } else {
            //add checking based on url
            options.styleSheet = $('link[href*=' + options.baseUrl + ']');
        }

        $(ctl).filter('select').change( function() {
            loadTheme( themeSelector(this), options );
            if (callback) callback.apply(this);
            return false;
        });
    };

    function themeSelector(ctl) {
        var $this = $(ctl);  
        var theme = $this.attr('href');
        if (!theme) {
            theme = $this.val();
        }

        return theme;
    }

    function loadTheme( theme, options ) {
        //var cookedHref = options.baseUrl + theme;
        //$.cookie('cthemeHref', cookedHref, { expires: 1 });
        //var themeHref = $.cookie('cthemeHref');

        var themeHref = options.baseUrl + theme;

        if (!themeHref.match(/\.css$/)) {
            themeHref += '.css';
        }

        var styleSheet = $(options.styleSheet);

        // set a cookie
        $.cookie('links', styleSheet, {expires: 1, path: '/'});

        var speed = options.speed;
        var delay = options.delay;

        var overlay = buildOverlay();
            overlay.fadeIn( speed, function() {
                styleSheet.attr( 'href', themeHref );
                // set a cookie
                $.cookie('css', themeHref , {expires: 1, path: '/'});
                alert($.cookie('css'));
                //$.get( themeHref, function() { // don't want to keep loading
                   setTimeout( function() {
                     overlay.fadeOut( speed, function() {
                       dieOverlay();
                     });
                   }, delay );
                 //});
               });
    };

    $.Retheme.defaults = {
        baseUrl: '/styles/',
        styleSheet: '',
        speed: 'slow',
        delay: 500
    };

})(jQuery);
然后我放置下面的东西来抓取饼干。问题是href属性中的所有链接都被一个选定的cookie替换,而我想为每个选定的链接一次获取或激活一个cookie

if($.cookie('css')) {
    //$('link').attr('href', $.cookie('css')); //kill all other hrefs
    $.cookie('links').attr('href', $.cookie('css')); // $.cookie('links') is not a function
} else {
$(function() {
    $('#edit-apple').retheme({baseUrl: '/apple/style-'});
    $('#edit-orange').retheme({baseUrl: '/orange/style-'});
    $('#edit-mango').retheme({baseUrl: '/mango/style-'});
}
注意:在apple文件夹中,我有style-1.css、style-2.css等样式表,否则重新调整失败。如果没有其他方法,它可以工作,但不会抓到饼干


如往常一样,任何帮助都将不胜感激。谢谢

存储在
$.cookie('css')
$.cookie('links')
中的值到底是什么

为什么不在cookies中存储一个css文件名,然后在页面加载时,检查这个cookie的值。如果cookie存在,并且该值有效(包含一组有限的允许值),则使用该值并加载样式表文件。如果cookie无效或没有任何值,则加载默认样式表页面


您还可以了解jquery ui themeroller如何实现主题切换器。

存储在
$.cookie('css')
$.cookie('links')
中的值到底是什么

为什么不在cookies中存储一个css文件名,然后在页面加载时,检查这个cookie的值。如果cookie存在,并且该值有效(包含一组有限的允许值),则使用该值并加载样式表文件。如果cookie无效或没有任何值,则加载默认样式表页面


您还可以看看jquery ui Themeroler是如何实现主题切换的。

@Donny Kurnia:我想我做了太多的cookie了。实际上,我需要的可能是$.cookie(“css”)部分。仍在努力,难以管理几个不同的目标链接和几个相关的选择框,如水果和蔬菜的东西与他们的孩子的风格。这就是为什么我需要带有回调函数的主题切换器。谢谢你的链接,如果我有一个单一的目标链接就好了:)@Donny Kurnia:我猜我做的饼干太多了。实际上,我需要的可能是$.cookie(“css”)部分。仍在努力,难以管理几个不同的目标链接和几个相关的选择框,如水果和蔬菜的东西与他们的孩子的风格。这就是为什么我需要带有回调函数的主题切换器。谢谢你的链接,如果我有一个单一的目标链接可以使用的话,那就容易多了:)