为什么取的cookie有时对,有时不对?

szjarvis 2018-12-26 09:05:46

<ul id="MenuUL" class="page-sidebar-menu page-header-fixed" data-keep-expanded="false" data-auto-scroll="true">
<li id="m0" class="nav-item start active open">
<a href="javascript:;" class="nav-link nav-toggle">
<i class="icon-basket"></i>
<span class="title">订单管理</span>
<span class="selected"></span>
<span class="arrow open"></span>
</a>
<ul class="sub-menu">
<li id="m0_0" class="nav-item active" onclick="test(this)">
<a href="~/Admin/Order/Send" class="nav-link">
<span class="title">发货处理</span>
<span class="selected"></span>
<!--正常情况可设置badge-success样式-->
<span id="iSendNum" class="badge badge-danger">0</span>
</a>
</li>
<li id="m0_1" class="nav-item" onclick="test(this)">
<a href="~/Admin/Order/Return" class="nav-link">
<span class="title">退货处理</span>
<span id="iRefundNum" class="badge badge-danger">0</span>
</a>
</li>
<li id="m0_2" class="nav-item" onclick="test(this)">
<a href="~/Admin/Order/Index" class="nav-link">
<span class="title">全部订单</span>
</a>
</li>
</ul>
</li>
<li id="m1" class="nav-item">
<a href="javascript:;" class="nav-link nav-toggle">
<i class="icon-user"></i>
<span class="title">会员管理</span>
<span class="arrow"></span>
</a>
<ul class="sub-menu">
<li id="m1_0" class="nav-item" onclick="test(this)">
<a href="~/Admin/User/Index" class="nav-link">
<span class="title">所有会员</span>
</a>
</li>
</ul>
</li>
<li id="m2" class="nav-item">
<a href="javascript:;" class="nav-link nav-toggle">
<i class="icon-social-dribbble"></i>
<span class="title">产品管理</span>
<span class="arrow"></span>
</a>
<ul class="sub-menu">
<li id="m2_0" class="nav-item" onclick="test(this)">
<a href="~/Admin/Product/Index" class="nav-link">
<span class="title">所有产品</span>
</a>
</li>
<li id="m2_1" class="nav-item" onclick="test(this)">
<a href="#" class="nav-link">
<span class="title">印象标签管理</span>
</a>
</li>
</ul>
</li>
<li id="m3" class="nav-item">
<a href="javascript:;" class="nav-link nav-toggle">
<i class="icon-pointer"></i>
<span class="title">信息管理</span>
<span class="arrow"></span>
</a>
<ul class="sub-menu">
<li class="nav-item">
<a href="#" class="nav-link">
<span class="title">公告管理</span>
</a>
</li>
<li class="nav-item">
<a href="#" class="nav-link">
<span class="title">新闻管理</span>
</a>
</li>
<li class="nav-item">
<a href="#" class="nav-link">
<span class="title">评论管理</span>
</a>
</li>
</ul>
</li>
</ul>


<script type="text/javascript">
$(function () {
var mid = $.cookie("menu_mid");
alert("mid: " + mid); //此处有时取的对,有时取的不对,有时取的还是[object][object]
});

function test(obj) {
var id = $(obj).attr("id");
$.cookie("menu_mid", id);
}
</script>



alert("mid: " + mid); 这句不知道为什么有时取的不是我刚设置的内容
说明一下,以上的html和js是在母版页中,菜单的链接都嵌了这个母版页。

按我的想法是,点击后执行了test(obj)方法后,会再次打开这个页执行$(function(){});中的内容,mid取的内容为什么有时不是刚刚设置的id呢……。
...全文
187 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
winzond 2018-12-27
  • 打赏
  • 举报
回复
引用 5 楼 winzond 的回复:
你在test(obj)内加一行console.log($(this).text()+"设置了cookie"),在var mid = $.cookie("menu_mid");后加一行console.log($(this).text()+"读取了cookie")。如果text()获取不到你想要的区别,可以加id,获取元素的id。看看执行顺序如何,有可能跟你想像的执行顺序有差异。
test(obj)应该不能用$(this).text()来获取,你传递了obj,那就是console.log($(obj).attr("id")),也有可能你调用时的obj设置错了。我去,元素传过来怎么还需要$()包装呢?你都用jQuery了,何不直接传递jQuery对像,为什么要传JS元素对象过来呢?
winzond 2018-12-27
  • 打赏
  • 举报
回复
你在test(obj)内加一行console.log($(this).text()+"设置了cookie"),在var mid = $.cookie("menu_mid");后加一行console.log($(this).text()+"读取了cookie")。如果text()获取不到你想要的区别,可以加id,获取元素的id。看看执行顺序如何,有可能跟你想像的执行顺序有差异。
szjarvis 2018-12-27
  • 打赏
  • 举报
回复
$.cookie("menu_mid", id, { expires: 1 }); 加了失效时间还是一样的情况。 function test(obj) { var id = $(obj).attr("id"); $.cookie("menu_mid", id, { expires: 1 }); } 这个设置cookie是没有问题的,我在test中加alert(id)是我点击的,只是在重新打开这页面时取cookie就对了,也没找出规律,也不是上一次点击的内容。
老马历写记 2018-12-27
  • 打赏
  • 举报
回复
不好意思,刚才没看你html代码,看了,如你说的html+js,应该不会出现你说的id不对问题呀。
除非不是原生代码,原来click事件是通过jquery绑定的,那倒是有可能,可能性就是刚才说的事件冒泡问题,如:
$(".sub-menu li").click(function(event) {
test(event.target);
}),有可能取到的就是span,id
老马历写记 2018-12-27
  • 打赏
  • 举报
回复
我猜是obj对象不对,var id = $(obj).attr("id");
1)是不是鼠标事件?
2)是不是绑定事件的obj,里面有子元素,cookie得到的有可能是子元素id。
这样一来,当鼠标点击子元素外围的时候,获取到的id是对的,当点击在子元素上则或获取到的id是子元素id,就不对了。
winzond 2018-12-26
  • 打赏
  • 举报
回复
添加过期时间,默认关闭浏览器就会删除,下次进来可能还没设置就访问了。所以,你设置一下过期时间,试试

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧