2016-06-14 11 views
0

ich mit jquery und jstree arbeitebenutzerdefinierten Rückruf bei jquery Event

Ich habe ein Ereignis, das jedes Mal, wenn mein Baum Veränderungen auslöst:

$tree.jstree() 
    .on("changed.jstree", function(event, target) { 
     //manipulate data 
    }); 

Es funktioniert perfekt. Ich kann auf "das" (den Baum) und auch auf Ereignis und Ziel zugreifen. Aber ich versuche, einen benutzerdefinierten Rückruf zu definieren. Ich habe versucht, so etwas wie dieses:

window.customCallback = (function(event, target) { 
    //manipulate data 
    //$(this).foo() manipulates the tree 
    //event.type to access the event type 
    //target.node to access the node 
}(this)); 

So kann ich verwenden:

$tree.jstree() 
    .on("changed.jstree", customCallback(event, target)); 

Aber es funktioniert nicht. Könnte mir jemand helfen?

Antwort

1

$ tree.jstree(). On ("changed.jstree", customCallback (Ereignis, Ziel));

Was Sie tun setzt das Ergebnis von customCallback als Callback-Handler.

Was Sie wollen, zu tun ist, um die Funktion selbst als Callback-Handler gesetzt:

var customCallback = function(event, target) { 
// ... 
}; 

$tree.jstree().on("changed.jstree", customCallback); 

Hinweis die „fehlenden“ Klammern - weil Klammern die Funktion aufrufen würde, und wir wollen das nicht.

Die Parameter werden automatisch an den Handler übergeben.