Подтвердить что ты не робот

Добавить событие в JQuery Plugin

У меня есть плагин JQuery, и я хочу добавить к нему какое-то событие. Любая помощь, советы или учебник?

4b9b3361

Ответ 1

Как я понимаю правильно Если у вас есть кнопка, которая закрывает всплывающее окно, и вам нужна функция, которая запускается после закрытия.

(function($) {
  $.fn.somePlugin = function(options) {
    // do some stuff with popup
    $('#closeButton').click(function(e) {
      //close popup
      if (options.onAfterClose !== undefined) {
         options.onAfterClose(e);
      }
    });
  };
})(jQuery);

он просто передает событие из события click.

$('#someId').somePlugin({
    onAfterClose: function(e) {
        alert('after close');
    }
});

Ответ 2

В вашем плагине jQuery первое, что вам нужно сделать, это запустить ваше пользовательское событие где-нибудь в вашем коде плагина:

$( "# someElement" ) триггер ( "someSpecialEvent" );.

Вы также можете передавать данные внутри своей триггерной функции.

$("#someElement").trigger("someSpecialEvent", "this does not need to be a string");

Затем создайте обработчик событий где-нибудь еще в вашем коде плагина для своего настраиваемого события:

$("#someElement").bind("someSpecialEvent", function(event, data) {
    //If you had passed anything in your trigger function, you can grab it using the second parameter in the callback function.
});

Затем вы можете разрешить пользователю передавать функцию обратного вызова в качестве опции, например:

$("#sampleElement").myPlugin({ 
    someEvent: function() {
        //user logic
    }
});

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

$.fn.samplePlugin = function(options) {
        options = $.extend({}, $.fn.samplePlugin.options, options);
        $("sampleElement").bind("specialEvent", function() {
             options.someEvent.call();
        });
 }

Ответ 3

jQuery docs имеет все о запуске события

Любой элемент, который был прикреплен к событию с помощью $.bind(), будет уведомлен о том, что событие было запущено и выполнить его код.

Пример:

$(document).trigger('my.event');

jQuery поддерживает события с именами, поэтому вы можете назвать событие чем-то вроде mypluginName.eventName, чтобы убедиться, что никакой другой плагин не вмешивается в ваши события;)

Простая и чистая, хотя будьте осторожны, docs заявляют, что:

Хотя .trigger() имитирует событие активации, в комплекте с синтезированный объект события, он не отлично воспроизводить естественно происходящее событие.

Хороший день