使用jquery在页面加载时突出显示jquery treeview中的默认节点

时间:2013-03-15 12:54:43

标签: jquery treeview

我正在使用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对象?

2 个答案:

答案 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");