jQuery - Событие Fire, если измененный класс CSS

как я мог запустить событие, если бы класс CSS был добавлен или изменен с jQuery? Изменение класса CSS запускает изменение jQuery () событие?

238
задан Matteo Alessani 7 September 2012 в 02:26
поделиться

3 ответа

Всякий раз, когда вы меняете класс в вашем скрипте, вы можете использовать триггер , чтобы поднять ваше собственное событие.

$(this).addClass('someClass');
$(mySelector).trigger('cssClassChanged')
....
$(otherSelector).bind('cssClassChanged', data, function(){ do stuff });

, но в противном случае, нет, нет никакого запеченного способа поднять событие, когда класс меняется. change() запускается только после того, как фокус выходит из входа, чей вход был изменен.

$(function() { кнопка var = $('.clickme') , box = $('.box') ; button.on('click', function() { box.removeClass('box'); $(document). trigger('buttonClick'); })); $(document).on('buttonClick', function() { box.text('Clicked!'); }); });
.box { фоновый цвет: красный; }
 
Hi

More info on jQuery Triggers

222
ответ дан 23 November 2019 в 03:21
поделиться

change() не работает при добавлении или удалении CSS класса, или изменении определений. Он срабатывает при таких обстоятельствах, как, например, когда выбрано или не выбрано значение select box.

Я не уверен, имеете ли вы в виду, изменилось ли определение класса CSS (что может быть сделано программно, но утомительно и обычно не рекомендуется), или класс добавлен или удален к элементу. В любом случае нет способа надежно зафиксировать это событие.

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

Или вы можете переопределить/заменить методы addClass() (и т.д.) в jQuery, но это не будет захватывать, когда это делается через ванильный Javascript (хотя я думаю, что вы могли бы заменить и эти методы тоже).

.
8
ответ дан 23 November 2019 в 03:21
поделиться

Я бы предложил вам отменить функцию 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 );

        // call your function
        // this gets called everytime you use the addClass method
        myfunction();

        // return the original result
        return result;
    }
})();

// document ready function
$(function(){
    // do stuff
});
53
ответ дан 23 November 2019 в 03:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: