2016-07-08 2 views
0

Я использую jstree и хотел бы сделать некоторые вызовы ajax, когда выбран узел. Я не хочу запускать вызов ajax, если один и тот же узел снова щелкнут. jstree example for listening events использует changed.jstree , как показано ниже:Событие изменения узла дерева захвата

$('#jstree') 
    // listen for event 
    .on('changed.jstree', function (e, data) { 
//my custom code here that should trigger if a new node is selected 
}); 

Однако это сработал, если я нажимаю тот же узел дважды. Я не мог найти ничего в объекте данных или события e, который бы сказал мне, является ли это таким же, как ранее выбранный узел. Есть ли что-нибудь в jstree, чтобы помочь мне понять это? Если не самый лучший способ понять это?

ответ

0

я обнаружил, что мы можем использовать измененный плагин для определения выбранных и снят первый плагин nodes.It показанных here

Создать jstree и включает изменили в массиве плагин:

$('#jstree').jstree(
      { 
       "core": { 
        "multiple": false, 
        // so that create works 
        "check_callback": true, 
        "data": menu 
       }, 
       "plugins": ["changed"] 
      } 
    ); 

Если как выбранные, так и невыбранные массивы пусты, что означает, что выбор не изменился:

$('#jstree').on('changed.jstree', function (e, data) { 
    if (!(data.changed.selected.length === 0 && data.changed.deselected.length === 0)) 
    { 
     //This is when something is really changed. 
});