2013-03-15 105 views
2

我正在使用jquery.treeview.js。 我需要在加载页面时突出显示节点背景颜色。 在点击我能够突出背景颜色和字体等使用jquery高亮页面加载jquerytreeview中的默认节点

$("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

警报(this.id)返回空 警报($(本).ID)返回undefined – 2013-03-15 13:58:17

回答

1

如果您正在使用this插件尝试设置$.cookie.json = true;

$.cookie.json = true; 
... 
$.cookie("url", $(this)); 
... 
$.cookie("url").css("backgroundColor", "grey"); 

如果这不起作用,你可以读到用JavaScript here对象去/序列化。如果你确实需要对象序列化,请小心,如果你在序列化之前和之后不需要确切的对象,那么dgvid的答案是一个更好的方法。只有当你用新变量/函数/侦听器/ ...扩展对象时才是这种情况。

+0

我甚至不知道克劳斯·哈特尔的插件能做到这一点。伟大的提示! – dgvid 2013-03-15 13:13:06

+0

我没有测试这种方法,但我添加了一个链接到JavaScript对象的序列化。如果我的方法不起作用,链接里面的那个会做:) – Eich 2013-03-15 13:16:28

+0

对象我能够得到,但它包含节点 2013-03-15 14:19:37

1

你的代码不工作,因为cookie包含字符串,没有别的。你的节点(技术上是一个jQuery对象的实例)不是一个字符串。文章Serializing Javascript Objects into Cookies有一个很好的概述如何做你想做的。

但是,对于您的特定需求,您可能可以更简单地完成该文章中描述的内容。如果您确定地知道要突出显示的节点将为总是有一个非空ID,您可以将该ID已经是一个字符串保存在cookie中。当你从cookie返回id时,你可以用它作为选择器来获取你想要的对象。例如:

// Works only if `this` has id attribute set: 
$.cookie("url", this.id); 


// Later... 
var id = $.cookie("url"); 
$("#" + id).css("backgroundColor", "grey"); 
+0

alert(this.id)return empty – 2013-03-15 13:57:28

+0

我想你会想尝试da_re的方法,那么。 – dgvid 2013-03-15 14:01:19