Создать своё событие на jquery

164
17 апреля 2018, 03:47

Возможно ли создать своё событие на jquery? Допустим нужно выполнять какое то действие, если у определенного контейнера сменился класс. Проблема в том что класс меняется программно в очень многих местах и не хочется искать все эти места. Хочется написать что-то вроде:

$('#block').on('addClass', function() {...});

Возможно ли такое?

Answer 1

Да. В местах, где вы программно меняете класс, можете добавить .trigger('addClass');

Тогда пример вашего кода выше заработает.

Можно так же переопределить метод .addClass(), но я считаю это дурным тоном.

Пример:

// Create a closure
(function(){
    // Your base, I'm in it!
var originalAddClassMethod = jQuery.fn.addClass;
jQuery.fn.addClass = function(){
    // Execute the original method.
    var result = originalAddClassMethod.apply( this, arguments );
    // trigger a custom event
    jQuery(this).trigger('addClass');
    // return the original result
    return result;
}
})();
// document ready function
$(function(){
    $("#YourExampleElementID").on('addClass', function(){ 
        //do stuff here
    });
});

Ссылки:

trigger

READ ALSO
Фильтрация маркеров в prunecluster

Фильтрация маркеров в prunecluster

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

162
Разница между bindActionCreators и dispatch

Разница между bindActionCreators и dispatch

Захотелось получить ответ на вопрос, который мучает:) В интернете не нашел хорошего ответа (может плохо искал)

187
Как отловить событие scroll? In react

Как отловить событие scroll? In react

Мне нужно отловить событие scroll вверх и вниз, и в зависимости от этого менять thisprops

218