1

我希望能够将隐藏字段的值设置为链接中 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 表示选定的文件夹。所以点击函数工作正常,并设置 currentDir,但在回发后我需要进入另一个回调(我假设我最初在这里询问的语句,即在树创建之后。)

我不认为像几个人要求的那样在这里发布 html 源代码真的有任何意义,它有类和所有东西,但我会给出同样的,来自 Firebug:

<a rel="HtmlHelpers" class="jstree-clicked"><ins class="jstree-icon">&nbsp;</ins>HtmlHelpers</a>

问题似乎是在调用函数时它还没有。因此,再次感谢您在正确的位置(回调?)获得声明的任何帮助!

编辑2:

好的,所以我得到了一个回调,它实际上是在加载树后触发的(请参阅上面 .bind 部分中的添加内容)。但似乎即使加载了树(通过显示元素数量的警报框确认),cookie 插件似乎没有运行,所以我之后的语句仍然没用。我现在插入的语句是其中一个回复中建议的语句,用于检查 jstree-clicked 元素是否存在,但它仍然不存在。所以有谁知道在cookie设置了jstree-clicked类后如何调用它?

4

2 回答 2

2

这与设置值无关,而是从.jstree-clicked属性中获取值。

尝试使用此代码查看元素是否存在:

alert($(".jstree-clicked").length);

如果它返回 >= 1 以外的任何值,则您知道该元素不存在。

即使您有多个元素,该.attr()方法也会返回第一个已知元素的所需属性,因此您的.jstree-clicked类可能存在于其他地方而没有rel属性。

http://api.jquery.com/attr/

于 2010-08-18T10:16:14.970 回答
0

经过大量的谷歌搜索,我终于找到了答案。如果使用 cookie 选项,则必须在 jquery 的绑定部分使用它:

.bind("reselect.jstree", function () {

然后回调不会触发,直到 cookie 设置了选定的项目,并且它工作。

于 2010-08-19T21:18:13.437 回答