У меня есть плагин JQuery, и я хочу добавить к нему какое-то событие. Любая помощь, советы или учебник?
Добавить событие в JQuery Plugin
Ответ 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() имитирует событие активации, в комплекте с синтезированный объект события, он не отлично воспроизводить естественно происходящее событие.
Хороший день