как получить событие click элемента строки jstree?

Не могли бы вы рассказать мне, как получить событие click элемента строки jstree ? Я делаю демо jstree в моей скрипке .он сделан в панели .вы должны нажать кнопку "Открыть Панель", чтобы проверить панель

Я хочу щелкнуть событие элемента jstree, чтобы получить его идентификатор по щелчку? Для подготовки дерева я должен нажать кнопку "Добавить тестовый случай" много раз, а затем нажмите кнопку "Открыть Панель".

вот моя скрипка http://jsfiddle.net/ZLe2R/6/

function addMenuItemsOfTestSuit(id){

 var menuid = "menu_" + id;
       var ref = $('#tree').jstree(true);
        alert('thank')
    ref.create_node("#", {"id" : menuid, "text" : id});

        ref.deselect_all();

}

3 ответов


используйте этот прослушиватель событий:

$('#tree').on("select_node.jstree", function (e, data) { alert("node_id: " + data.node.id); });

посмотреть событий API для jsTree список событий.

EDIT: создал скрипку:http://jsfiddle.net/y7ar9/4/


можно использовать

$(document).on('click', '.jstree-anchor', function(e) {...});

вы можете переместить обработчик кликов в свою собственную функцию и получить id от родителя якоря:

$(document).on('click', '.jstree-anchor', function(e) {
    var anchorId = $(this).parent().attr('id');
    var clickId = anchorId.substring(anchorId.indexOf('_') + 1, anchorId.length);
    onMenuItemClick(clickId, e);
});
$(document).on('click', '.clickTestCaseRow', function (e) {
    onMenuItemClick(this.id, e);
});
function onMenuItemClick(clickId, e) {
    hideDisplayView();
    displayNewView(clickId);
    e.stopPropagation();
}

вот скрипка.


лично мне нравится activate_node события вместо. если вы сделаете обратную передачу при изменении выбора узла, и страница будет перезагружена, и узел все еще выбран, это не вызовет другого события, вызывающего бесконечный цикл обратной передачи.

$('#jstree').on('activate_node.jstree', function (e, data) {
     if (data == undefined || data.node == undefined || data.node.id == undefined)
                return;
    alert('clicked node: ' + data.node.id);
});