jQuery: как расширить расширение? - PullRequest
2 голосов
/ 25 августа 2011

Я видел, что плагины jQuery могут быть расширены следующим образом:

$.ui.plugin.add('draggable', 'zIndex', {
    start: function(event, ui) { //... }
})

Мне интересно, возможно ли расширить расширение?Итак, скажем, я хочу что-то изменить (не все) в расширении zIndex перетаскиваемого плагина, то есть разместить собственный код в самом начале функции обратного вызова start.Как бы я пошел об этом?Как получить доступ к этой функции для прокси?

1 Ответ

1 голос
/ 26 августа 2011

Вдоль этих строк:

(function ($) {
    function proxyPlugin(plugin, callback, option, func) {
        $.each($.ui[plugin].prototype.plugins[callback], function (k, v) {
            if (v[0] == option) {
                var fn = v[1];

                v[1] = function () {
                    func.apply(this, arguments);

                    fn.apply(this, arguments);
                }
            }
        });
    }

    proxyPlugin('draggable', 'start', 'zIndex', function (e, ui) {
        // we are in our custom function that will be triggered before the original one.
        // our custom function receives all the arguments the original one has.
        // for example, let's add a property by the name of foo to the ui object. 
        ui.foo = true;
    });
})(jQuery);
...