我正在使用jquery.treeview.js。 我需要在页面加载时突出显示节点背景颜色。 点击后我可以突出显示背景颜色和字体等。
$("a").css("backgroundColor", "");
$("a").css("font-weight", "");
$(this).css("backgroundColor", "grey");
$(this).css("font-weight", "bold");
$.cookie("url", $(this));
现在我将此对象保存在cookie中并且能够读取相同但无法应用css,因为它说没有这样的属性。
$.cookie("url").css("backgroundColor", "grey");
为什么我没有从cookie中获取jQuery对象?
答案 0 :(得分:1)
如果您使用的是this插件,请尝试设置$.cookie.json = true;
:
$.cookie.json = true;
...
$.cookie("url", $(this));
...
$.cookie("url").css("backgroundColor", "grey");
如果这不起作用,您可以阅读有关JavaScript here的对象去/序列化。如果你真的需要对象序列化,请小心,如果在序列化之前和之后不需要确切的对象,dgvid的答案是更好的方法。只有在使用新变量/ functions / listeners / ...扩展对象时才会出现这种情况。
答案 1 :(得分:1)
您的代码无效,因为Cookie包含字符串,没有别的。您的节点(技术上是jQuery对象的实例)不是字符串。文章Serializing Javascript Objects into Cookies非常清晰地概述了如何做你想做的事。
但是,根据您的具体需要,您可以做一些比该文章中描述的更简单的事情。如果您确定知道要突出显示的节点总是具有非空ID,则只需在cookie中保存已经是字符串的id即可。当您从cookie返回id时,可以将其用作获取所需对象的选择器。例如:
// Works only if `this` has id attribute set:
$.cookie("url", this.id);
// Later...
var id = $.cookie("url");
$("#" + id).css("backgroundColor", "grey");