获取声明中的元素属性 - jQuery

时间:2014-08-05 00:00:58

标签: javascript jquery

这段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

2 个答案:

答案 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。