Как jquery-ui знает, как связать обратные вызовы событий, предоставляемые в качестве опций инициализации? - PullRequest
1 голос
/ 14 августа 2010

Как jquery-ui знает, как связывать обратные вызовы, передаваемые в качестве параметров инициализации?Я думаю, что ответ где-то в методе $. Widget.bridge (ln 71) , но я не совсем уверен, что там происходит.

Пример того, что я 'Я говорю о чем-то вроде события автозаполнения поиска .Пример кода показывает, что я могу привязать «поиск» с помощью параметров инициализации, но я не вижу ничего конкретного для этого поведения кода автозаполнения.

Эта техника кажется классной.Я хотел бы использовать это.

Ответы [ 2 ]

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

Я не очень знаком с кодом jQueryUI, но вот пример того, как можно вызвать обратный вызов, переданный в качестве аргумента.

Попробуйте: http://jsfiddle.net/pshLK/

Когда загружается пример, вы получите 2 оповещения. Это результат обратного вызова, который был запущен для обоих совпадающих элементов <div>. Вы можете изменить функцию обратного вызова и нажать «Выполнить» вверху, чтобы увидеть, что ваш обратный вызов работает.

(function($) {
       // create myPlugin
    $.fn.myPlugin = function(options) {
           // iterate through all elements the selector matched
        return this.each(function() {
                // Change the color to blue
            $(this).css('color','blue');
                // Call the callback using the .call() method
                //    so that we can pass the value of "this"
                //    as the element in the iteration
            options.callback.call(this);
        });
    };
})(jQuery);

   // Find all <div> elements on the page, and call myPlugin which
   //   receives an object as an argument that has a "callback" property
   //   whose value is the function that will be called in the plugin.
$('div').myPlugin({
         // This function will run for each <div> displaying the ID of the <div>
    callback:function() { alert('the id is ' + this.id); }
});
1 голос
/ 14 августа 2010

Функции в JavaScript могут быть переданы в качестве значений другим функциям и выполнены.Например:

function execute(fn)
{
    fn(); // execute function passed as a parameter
}

var alertHelloWorld = function ()
{
    alert("Hello World");
};

execute(alertHelloWorld); // this will alert "Hello World"

Итак, что делает плагин jQuery Autocomplete, кеширует все функции, переданные в его инициализаторе, и затем выполняет их, когда это необходимо.IE: когда данные должны быть обработаны или когда данные были обработаны.

Вот пример, несколько похожий на плагин автозаполнения:

// execute three functions contained in an object literal
function execute(o)
{
    o.One();
    o.Two();
    o.Three();
};

// call "execute" passing in object literal containing three anonymous functions
// this will alert "One", then "Two", then "Three"
execute(
{
    One: function () { alert("One"); },
    Two: function () { alert("Two"); },
    Three: function () { alert("Three"); }
});

Параметры также могут быть переданы изфункция, выполняющая другую функцию:

function execute(fn)
{
    // execute function passed as a parameter with a parameter
    fn("Hello World");
};

execute(function (s)
{
    // parameter "s" supplied by "execute" will contain "Hello World"
    alert(s);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...