Callback функция в плагине JQuery

412
08 января 2017, 18:46

Пытаюсь сделать плагин для Jquery. Вот его максимально упрощенная версия:

(function($) {
  $.extend({
    VK: function(options) {
      this.init = function() {
      }
      this.init();
      // allow jQuery chaining
      return this;
    }
  });
})(jQuery);

На данный момент вызывается мой плагин след образом:

$.VK();

Я хочу создать обрабтчик события в стиле как это реализовано, например, для ajax:

$.VK().done(function( data ) {
}).fail(function( data ){
});

как это можно реализовать ? То есть вопрос заключается, как вызвать функцию done() из плагина?

Думаю нужно что-то вроде такого, но это конечно не рабоатет
JSFiddle

(function($) {
  $.extend({
    VK: function(options) {
      this.init = function() {
        var someCondition = true;
        if (someCondition) {
          this.done("OK")
        } else {
          this.fail("fail")
        }
      }
      this.init();
      // allow jQuery chaining
      return this;
    }
  });
})(jQuery);
Answer 1

Вообщем благодаря вашим подсказкам пока что получилось так:

(function($) {
  $.extend({
    VK: function(options) {
      init = function() {
        var deferred = $.Deferred();
        var someCondition = true;
        if (someCondition) {
           deferred.resolve("ok");
        } else {
           deferred.reject("fail");         
        }
        return deferred.promise();
      }
      return init();
    }
  });
})(jQuery);

$(function() {
  $("#button").click(function() {
    $.VK().done(function(data) {
      alert(data);
    });
  });
});
READ ALSO
Упростить код JS (jquery)

Упростить код JS (jquery)

Как сократить скрипт?

361
Баг flexbox и абсолютного позиционирования в Firefox

Баг flexbox и абсолютного позиционирования в Firefox

Собственно, вот скриншот проблемыСверху в низ: 1 - Chrome, 2 - Opera, 3 - Firefox, 4 - Edge

444
Отображение свойств только на tablet и desktop

Отображение свойств только на tablet и desktop

Каким должен быть media-запрос, чтобы к div не применялись CSS-свойства на экранах <480?

412