jQuery设置隐藏字段的值?

时间:2010-08-18 10:07:32

标签: jquery attributes hidden-field

我希望能够将隐藏字段的值设置为链接中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">&nbsp;</ins>HtmlHelpers</a>

问题似乎是在调用函数时它还没有。再说一次,在正确的地方(回调?)获得声明的任何帮助都表示赞赏!

编辑2:

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

2 个答案:

答案 0 :(得分:2)

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

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

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

如果它返回&gt; = 1以外的任何内容,则表示该元素不存在。

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

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

答案 1 :(得分:0)

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

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

然后在cookie设置了所选项目之后才会触发回调,并且它可以正常工作。