Я хочу иметь возможность установить значение скрытого поля равным значению атрибута rel в ссылке:
$("#currentDir").val($(".jstree-clicked").attr("rel"));
Но это не работает.Однако это более простое выражение прекрасно работает:
$("#currentDir").val("TEST");
Это устанавливает скрытое поле с id = currentDir в значение "TEST".Но почему не работает другое выражение?
EDIT:
Как уже указывалось, элемент с классом 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, указывающим выбранную папку.Таким образом, функция click работает нормально и устанавливает currentDir, но после обратной передачи мне нужно перейти к другому обратному вызову (я полагаю, с помощью оператора, о котором я изначально спрашивал здесь, т.е. после того, как дерево было создано.)
Я не думаю, что действительно есть смысл публиковать html-источник здесь, как просили несколько человек, у него есть класс и все, но я приведу его точно так же из Firebug:
<a rel="HtmlHelpers" class="jstree-clicked"><ins class="jstree-icon"> </ins>HtmlHelpers</a>
Проблемакажется, что у него еще нет этого при вызове функции.Итак, еще раз, любая помощь с получением утверждения в нужном месте (обратный вызов?) Приветствуется!
РЕДАКТИРОВАТЬ 2:
Хорошо, поэтому я получил обратный вызов, который фактически запускается после того, как деревозагружен (см. дополнение в разделе .bind выше с комментарием).Но похоже, что даже если дерево загружено (подтверждается окном предупреждения, показывающим количество элементов), плагин cookie, похоже, не был запущен, поэтому утверждение, которое я ищу, все еще бесполезно.Утверждение, которое я вставил сейчас, является предложенным в одном из ответов, чтобы проверить, существует ли элемент, щелкнувший по нажатию jstree, и все еще нет.Таким образом, кто-нибудь знает, как я могу вызвать это после того, как cookie установил класс jstree-clicked?