jQuery draggable (), при перетаскивании выполняет динамическую функцию - PullRequest
2 голосов
/ 23 августа 2010

У меня есть функция jQuery draggable () и при перетаскивании выполняет несколько других функций, основанных на if. Примерно так:

$("div.element").draggable({
    drag: function() {
            if  (a=1){
                function1();
                }
            if  (a=2){
                function2();
                }   
            if  (a=3){
                function3();
                }   
    }
});

Здесь задействовано много переменных, и я стремлюсь оптимизировать это с точки зрения производительности. Можно ли заставить перетаскиваемый объект «знать», какую функцию выполнять при перетаскивании, не выполняя проверку if каждый раз. Что-то вроде перетаскивания сделайте просто function2 () и function3 ().

Спасибо

1 Ответ

2 голосов
/ 23 августа 2010

Вы можете использовать данные jQuery для хранения соответствующего функционального объекта с перетаскиваемыми элементами:

// declare the appropriate function for each element
$("select elements that need function1").data("dragFunction", function() {
  // whatever
});
$("select elements that need function2").data("dragFunction", function() {
  // whatever
});

// and then... just execute whatever function is stored in "dragFunction"
$("div.element").draggable({
  drag: function() { return $(this).data("dragFunction")(); }
});
...