Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как вызвать плагин в виде события?

Константин Ефименко Гуру (3721), закрыт 4 года назад
В примере приведённом ниже, плагин позволяет менять цвет блока, при наведении курсора мыши:

(function($)
{
jQuery.fn.responsiveBlock = function(options)
{
var th = $(this),
options = $.extend(
{
defColor:"white",
hoverColor:"red"
}, options);
var make = function()
{
th.css("background-color", options.defColor).mouseenter(function()
{
th.css("background-color", options.hoverColor);
}).mouseleave(function()
{
th.css("background-color", options.defColor);
});
};
return this.each(make);
};
})(jQuery);

$('div').responsiveBlock();

https://jsfiddle.net/1btwhca7/

Сам пример взят из статьи:
http://jquery.page2page.ru/index.php5/Создание_плагина_jQuery

При попытке воспроизвести последний пример, ничего не происходит. Как выполнить функцию, по подобию самостоятельного события?

Пример самостоятельного события:
$(selector).on('change', function(){});
Дополнен 4 года назад
В плагине приведённом выше, обращение идёт через запуск функции:

$(selector).responsiveBlock();

Но я бы не хотел запускать событие как функцию, я хотел бы чтобы плагин и был событием.
Я пытаюсь сделать событие, которое будет само запускаться как только к нему обратятся:

$(selector).on('responsiveBlock', function(){});

Исходя из этого события, я бы хотел задавать какое-то поведение, как если бы внутри функции я написал следующее:

$(selector).on('responsiveBlock', function()
{
alert('Test');
});

Логично предположить, что alert() в данном случае, будет запускаться при наведении курсора на div. При этом, если я задал какое-то поведение внутри плагина, оно тоже должно учитываться.

Как сделать нечто подобное? Я не смог найти не одного реального примера. Распишите как вам удалось этого добиться.
Лучший ответ
MalkoR Гуру (2690) 4 года назад
так не пойдет?
$('div').on('change', responsiveBlock(options))
Константин ЕфименкоГуру (3721) 4 года назад
Тоже интересный подход, но меня всё таки интересует:

$('div').on('responsiveBlock', function(){});
MalkoR Гуру (2690) Посмотри в поиске такое: simple publish-subscribe with jquery ben mccormack там статья как делать то что ты хочешь, из твоего вопроса изначально не понятно, что у тебя за проблема. может это поможет. А вообще, jquery - это уже устаревшее и не интересно, давноооо уже не пользовался им..
Остальные ответы
Похожие вопросы