универсальная функция обратного вызова jquery - PullRequest
1 голос
/ 06 августа 2011

Часто я сталкиваюсь с ситуациями, когда я хочу выполнить функцию jQuery или инициализировать плагин jQuery, такой как jQuery datatables, и хотел бы, чтобы код выполнялся после завершения функции. Функции jQuery, такие как hide или fadein или другие функции преобразования, принимают необязательный параметр обратного вызова для достижения этой цели. Однако есть и другие функции jQuery, которые просто возвращают объект this для создания цепочки. Я хотел бы знать, есть ли способ использования цепочки или какого-либо другого метода для выполнения какой-либо универсальной функции, которая принимает обратный вызов после того, как завершится любая функция jQuery, которую я вызываю.

Что-то вроде:

$("#element").datatable().executeCallback(myCallbackFunction);

Ответы [ 3 ]

2 голосов
/ 06 августа 2011

Вам просто нужен плагин, который принимает аргумент функции, применяет его ко всему, что соответствует объекту, и возвращает сам объект.Простая цепочечная реализация «genericCallback»:

function makeRed() {
    $(this).css("border", "1px solid red");
}

$.fn.genericCallback = function(fn) {
    if(!typeof fn === 'function') {
        console.log('Function expected, got a ' + typeof fn);   
    }
    return this.each(function() {
        fn.apply(this);
    });
};

$("div").genericCallback(makeRed);

Вы можете попробовать это здесь.

2 голосов
/ 06 августа 2011

Посмотрите на очередь jquery http://api.jquery.com/queue/,, это может помочь вам.

0 голосов
/ 06 августа 2011

Это не очень надежно, но оно делает то, что вы хотите для общих обратных вызовов.

$.fn.executeCallback = function( fn )
{
    window[fn]();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...