Jstree: данные параметра привязки dblclick не определены

Я пытаюсь использовать хорошую библиотеку jstree, но у меня есть странная проблема с привязкой dblclick. Вот мой код

$("#basic_html").jstree({
    themes: {
        url: "http://mywork/shinframework/shinfw/themes/redmond/css/jstree/default/style.css"
    },
    "plugins" : ["themes","html_data","ui","crrm","hotkeys", "core"],
});

$("#basic_html").bind("dblclick.jstree", function (e, data) {
    alert(e);
    alert(data);
});

Когда этот код запускается, и я делаю dblclick для некоторого узла, я вижу 2 предупреждения. Первый object - правильно, второй undefined - НО я хочу получить информацию о данных.

Пожалуйста, если какой-то специалист решит эту проблему, дайте мне правильный способ для правильного использования dblclick и получения информации «данные» об узле, на который я нажал.

Спасибо


person Dmytro Stramousov    schedule 18.05.2011    source источник
comment
Привет, я пытаюсь использовать событие dblclick.jstree со следующим кодом. .bind(dblclick.jstree, function (event, data) { }) Проблема в том, что данные не определены, так как я могу получить ссылку на свой объект дерева? Приведенный выше код отлично работает со всеми другими событиями. Там я получаю данные и могу получить ссылку на дерево с data.inst. Мне очень нужна помощь..   -  person Dmytro Stramousov    schedule 19.05.2011
comment
Та же проблема. Вы когда-нибудь находили решение?   -  person Tom Redman    schedule 01.03.2013


Ответы (2)


Я рекомендую этот подход. . .

$("#basic_html li").live("dblclick", function (data) {
   //this object is jsTree node that was double clicked
   ...
});

Во-первых, вам обычно нужно только знать, был ли нажат элемент li, поэтому отслеживание события на li даст вам все, что вам нужно. Во-вторых, используйте live или delegate для привязки события, чтобы вы могли манипулировать деревом, не прерывая событие.

Получив узел, по которому дважды щелкнули (объект this), вы можете использовать встроенные функции, подобные этой . . .

if (!jsAll.is_selected(this)) { return false; } //cancel operation if dbl-clicked node not selected

Где . . .

jsAll = $.jstree._reference("basic_html")
person Toadmyster    schedule 08.09.2011
comment
к сожалению, data все еще null с таким подходом - person hoang; 08.01.2013

$("#basic_html").bind("dblclick.jstree", function (event) {
    var node = $(event.target).closest("li");//that was the node you double click
});

это код, который вы хотите.

person Irving    schedule 02.07.2013