实际上我已经创建了一个导航标签。我想要的是导航标签的点击div应该从白色变为黑色背景,即使刷新后也应该保持黑色,直到点击任何其他标签。
我尝试了下面的代码,但它会抛出错误,说'.css不是函数'。
$(document).ready(function() {
if (localStorage.getItem("clicked")) {
var clickedtab = localStorage.getItem("clicked");
clickedtab.css(‘background’, ’black’);
} else {
$("#home").css('background', ’black’);
}
$("#home").click(function() {
localStorage.setItem('clicked', $(this).attr(‘id’));
});
$("#profile").click(function() {
localStorage.setItem('clicked', $(this).attr(‘id’));
});
$("#notifs").click(function() {
localStorage.setItem('clicked', $(this).attr(‘id’));
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="menu">
<div id="home" class="menu_align active_one">Home</div>
<div id="profile" class="menu_align">Profile</div>
<div id="notifs" class="menu_align">Notifications</div>
</div>
答案 0 :(得分:1)
首先请注意您的代码中有几个无效引号。 ‘
和’
需要替换为'
。还要确保您使用的双引号也有效;它们应该只是"
。
您的逻辑问题是因为您从localStorage检索的clickedtab
值是之前点击的id
的{{1}} 字符串。您需要从中创建一个jQuery对象,以便在该元素上调用jQuery方法,例如div
。
为此,您可以将css()
连接到选择器,并将其作为jQuery对象的参数提供。如果localStorage中没有任何内容,也可以通过使用公共类来选择id
元素,而不是重复相同的单击处理程序N次,也可以通过向选择器提供默认值来简化逻辑。试试这个:
div
$(document).ready(function() {
var activetab = localStorage.getItem("clicked") || 'home';
$('#' + activetab).css('background', 'black');
$(".menu div").click(function() {
localStorage.setItem('clicked', this.id);
});
});
请注意,工作示例位于Fiddle中,因为SO Snippets对访问localStorage有限制。