Проблема: узел выбора Jstree всегда возвращает узел контейнера - PullRequest
1 голос
/ 05 мая 2011

Я новичок в JQuery / Jstree. Когда я пытаюсь выбрать узел программным способом, он всегда возвращает узел контейнера, а не дочерний узел, который я пытался получить. Пожалуйста помоги.

Мой код выглядит следующим образом,

<div id="containerId" class="demo">
<ul>
    <li id="phtml_1">
        <a href="#">Root node 1</a>
        <ul>
            <li id="zzx">
                <a href="#">Child node 1</a>
            </li>
            <li id="phtml_3">
                <a href="#">Child node 2</a>
            </li>
        </ul>
    </li>
</ul>

1010 * Javascript *

$(function () {
    $("#containerId").jstree({ 
        "plugins" : [ "themes", "html_data", "ui" ]
    });
});

Сценарий

$(document).ready(function () { 
  var node= $("#containerId").jstree("select_node","#zzx"); 
  //Problem here, why the id is still the "containerId", not the "zzx"?
  alert(node.attr("id"));
}); 

спасибо - Роджер

1 Ответ

0 голосов
/ 17 июля 2011

Вы устанавливаете node равным #('containerId') и ничего больше. Когда вы вызываете метод для объекта в jQuery, результатом является просто объект. Таким образом, вы можете связать методы следующим образом:

$('#containerId').method1().method2().method3();

Если вы хотите программно выбрать узел, вы уже сделали это правильно:

$("#containerId").jstree("select_node","#zzx");

Поскольку вы знаете узел, который вы только что выбрали, вы можете получить узел, как и любой другой элемент, с помощью jQuery:

$('#zzx')

Если вместо этого вы пытаетесь вызывать функцию каждый раз, когда выбирается узел, используйте это:

$('#containerId').bind('select_node.jstree', function (event, data) {
    alert(data.rslt.obj.attr('id'));
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...