为什么js-cookie不能用于href值?

时间:2018-01-16 13:21:33

标签: javascript jquery

请有人帮我js-cookie

这是我的代码无效:

// Set Default 
var names = ['car', 'bus'];

// Get Cookie
var href_name = $.cookie('href_name');

// Cookie Exists
if (href_name){
    $('#switch_style').attr(href_name);
}
// Cookie Doesn't Exist
else {

}

$('#box').on('click', function(){
    $("#switch_style").attr("href", 'bus' );    
    $.cookie('href_name', 'bus');
});

在这里你可以看到jsfiddle

这里也是工作示例:

// Set Default Colors to Match CSS CLasses
var colors = ['black', 'red'];

// Get Cookie
var box_color = $.cookie('box_color');

// Cookie Exists
if (box_color){
    $('#box').addClass(box_color);
}
// Cookie Doesn't Exist
else {
    $('#box').addClass('black');
}

$('#box').on('click', function(){
    $(this).removeClass('black').addClass('red');
    $.cookie('box_color', 'red');
});

这里是jsfiddle

所以我不知道为什么第一个例子不起作用。当有人点击该框后,我需要更改href之后,并且需要在刷新页面后保持更改。但由于某种原因,它不起作用。请看第一个例子。而第二个例子正常工作。

谢谢

2 个答案:

答案 0 :(得分:2)

只需替换

// This is actually a getter
$('#switch_style').attr(href_name);

// Here we are actually setting the "href" from cookie
$('#switch_style').attr("href", href_name);

你的代码应该可以正常工作。 另外,您实际上并未使用js-cookie,而是旧版本jquery-cookie

答案 1 :(得分:1)

好像你错误地使用了js-cookies。

// Set Default Colors to Match CSS CLasses
var colors = ['black', 'red'];

// Get Cookie
var box_color = Cookies.get('box_color');

// Cookie Exists
if (box_color != ""){
    $('#box').addClass(box_color);
}
// Cookie Doesn't Exist
else {
    $('#box').addClass('black');
}

$('#box').on('click', function(){
    $(this).removeClass('black').addClass('red');
    Cookies.set('box_color', 'red');
});

修改
这篇文章似乎无关紧要,因为正如@palaѕн指出的那样,你没有使用js-cookie