javascript - 检查/更改背景位置

标签 javascript jquery css

我正在尝试创建一个按钮,当单击该按钮时,背景位置会发生变化(我不想使用 CSS,因为我希望它保持不变,而不仅仅是在单击时执行)。然后,当用户单击保存按钮时,它会检查背景位置以查看要保存的设置(打开或关闭)。我正在使用 jQuery,从我在网上看到的情况来看,我似乎一切正常,但它不工作,所以有些地方不对。这是代码:

function onoffButton(i, g)
{
    $(i).click(function () {
        if ($(g).css("backgroundPosition") == "0px -20px") {
            $(g).css("backgroundPosition", "0px 0px");
        } else {
            $(g).css("backgroundPosition", "0px -20px");
        }
    });
}

然后会被这样的东西调用:

onoffButton("#testswitchRating", "#faviconswitch");

然后检查它们以保存设置:

if ($("#ratingswitch").css("backgroundPosition") == "0px 0px") {
    createCookie('showRatings', 0,365);
}

if ($("#ratingswitch").css("backgroundPosition") == "0px -20px") {
    createCookie('showRatings', 1,365);
}

我正在阅读这里的 cookie:

function checkSettings()
{
if (readCookie('showRatings') == 0) {
$('.rating').css('display', 'none');
$('#ratingswitch').css('background-position','0px 0px');
} else {
$('.rating').css('display', 'inline');
$('#ratingswitch').css('background-position','0px -20px');
}
}

然后我在这里调用它:

<body onload="checkSettings();">

最佳答案

我认为这里最好的建议是简单地使用像 .altPosition 这样的 CSS 类,并在您的 CSS 文件中定义差异。然后使用 toggleClass()像这样:

$(i).click(function () {
    $(g).toggleClass("altPosition");
});

为了保存您的 cookie,您可以使用 $(g).is(".altPosition") 做一些事情来检测它处于哪个状态,以及 toggleClass() 可以将第二个参数作为 bool 值,用于打开或关闭读取您的 cookie:

// to write:
createCookie("showRatings", $("#ratingsswitch").is(".altPosition"), 365);
// and to read:
$("#ratingsswitch").toggleClass("altPosition", readcookie("showRatings"));

然后在你的 CSS 中:

#faviconswitch { 
    background-position: 0px 0px;
}
#faviconswitch.altPosition { 
    background-position: 0px -20px;
}

关于javascript - 检查/更改背景位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6239459/

相关文章:

javascript - HTML5 捕捉旋转和平移后的绝对位置

javascript - 查找在jquery中选中的单选按钮的值

javascript - 需要 jquery datepicker 再次触发以更改日期

html - 在 CSS 中隐藏表格列

html - CSS 形状前面的文本

javascript - 如果字符串不是较大字符串的一部分,则使用 javascript 中的正则表达式替换字符串

javascript - Firefox 47 上的 pushpad 错误 : navigator. serviceWorker 未定义

javascript - 使用 jQuery find().show() 显示子项

jquery.data() : is it portable to all the browser?

javascript - 将 HTML/Javascript 元素转换为可执行文件