我希望能够将隐藏字段的值设置为链接中rel属性的值:
$("#currentDir").val($(".jstree-clicked").attr("rel"));
但这不起作用。这个简单的表达式可以正常工作:
$("#currentDir").val("TEST");
将id = currentDir的隐藏字段设置为值“TEST”。但为什么其他表达不起作用?
编辑:
正如所指出的,调用此语句时,不存在具有jstree-clicked类的元素。正如我在下面评论的那样,我认为它需要作为回调进入。但我不知道在哪里(尝试了几个地方,但没有一个工作)。
这是JsTree代码:
<script type="text/javascript">
var url;
$(function () {
$("#demo2")
.bind("loaded.jstree", function () {
alert($(".jstree-clicked").length); //This works as a callback, but unfortunately the cookie seems to not have been set yet...
$("a").click(function () {
url = "?url=" + $(this).attr("rel");
$('#result').load('/Customers/Files/' + encodeURI(url));
$('#currentDir').val($(this).attr("rel"));
});
}).jstree({
"html_data": {
"ajax": {
"url": "/Customers/Directories/"
}
},
"ui": {
"select_limit": 2,
"select_multiple_modifier": "alt",
"selected_parent_close": "select_parent"//,
},
"themes": {
"theme": "classic",
"dots": true,
"icons": true
},
"plugins": ["themes", "html_data", "ui", "cookies"]
});
});
</script>
如您所见,我已经有一个回调函数,可以在点击时设置currentDir隐藏字段的值。但是由于还会有回发,我正在重新加载页面,其中一个cookie插件将JsTree设置为与之前相同,使用jstree-clicked表示所选文件夹。所以click函数工作正常,并设置currentDir,但是在回发之后我需要进入另一个回调(我假设我最初在这里询问的语句,即在树创建之后。)
我认为在这里发布html源代码并没有任何意义,因为有几个人要求,它有类和所有内容,但我会从Firebug中给出它同样的内容:
<a rel="HtmlHelpers" class="jstree-clicked"><ins class="jstree-icon"> </ins>HtmlHelpers</a>
问题似乎是在调用函数时它还没有。再说一次,在正确的地方(回调?)获得声明的任何帮助都表示赞赏!
编辑2:
好的,所以我得到了一个回调,即在加载树之后实际触发(请参阅上面的.bind部分中的添加注释)。但看起来即使加载了树(通过显示元素数量的警告框确认),cookie插件似乎也没有运行,所以我所说的语句仍然没用。我现在插入的语句是其中一个回复中建议的语句,用于检查jstree点击的元素是否存在,但它仍然没有。所以任何人都知道如何在cookie设置jstree点击的类之后调用它?
答案 0 :(得分:2)
这与设置值无关,而是从.jstree-clicked
属性中获取值。
尝试使用此代码查看元素是否存在:
alert($(".jstree-clicked").length);
如果它返回&gt; = 1以外的任何内容,则表示该元素不存在。
即使您有多个元素,.attr()
方法也会返回第一个已知元素的所需属性,因此您的.jstree-clicked
类可能存在于其他地方而没有rel
属性。
答案 1 :(得分:0)
.bind("reselect.jstree", function () {
然后在cookie设置了所选项目之后才会触发回调,并且它可以正常工作。