这段javacsript代码(使用jquery.treeview和jquery.cookie插件)生成名为" tree_state_undefined"的cookie。
我真的不太喜欢javascript,所以任何人都可以告诉我,如何在初始化中获取单个ul.tree元素的ID?
非常感谢
$("ul.tree").treeview({
collapsed: true,
animated: "medium",
control:"#controller_" + $(this).attr('id'),
persist: "cookie",
cookieId: "tree_state_" + $(this).attr('id')
});
为了记录,它是这个插件:
https://github.com/jzaefferer/jquery-treeview/blob/master/jquery.treeview.js
答案 0 :(得分:1)
你可以尝试:
$("ul.tree").each(function() {
var $ul = $(this);
$ul.treeview({
collapsed: true,
animated: "medium",
control:"#controller_" + $ul.attr('id'),
persist: "cookie",
cookieId: "tree_state_" + $ul.attr('id')
});
});
答案 1 :(得分:1)
在您运行代码时,this
变量的值可能是window
,或者由于某种原因我们无法从代码中看到您发布了body
元素。
this
值根据函数的调用方式而变化,有关详细信息,请参阅this section on Javascript Garden。在您的情况下,我怀疑如果此代码全局运行,或在$(document).ready(function () { ... });
块内,this
将引用window
/ document
。
因此,当您尝试执行$(this).attr('id')
时,它会尝试获取正文的id
属性,这是未定义的。然后你将它连接到一个字符串,这就是为什么你得到一个名为" tree_state_undefined"的cookie。