Trigger event using Jquery on CSS change?

后端 未结 3 1904
不思量自难忘°
不思量自难忘° 2020-12-19 01:38

I\'m curious is there an event listener or perhaps a way to construct a method that will trigger when a CSS change happens?

My stylesheet uses media queries and I wa

3条回答
  •  囚心锁ツ
    2020-12-19 01:56

    Binding to the window.resize is your best option (I believe). There isn't any event fired when you change an element's CSS. You can however optimize a bit by caching the selector used:

    var $searcButton = $('#search-button');
    $(window).resize(function() {
        if($searcButton.css("display") == "none") {
            //do something
        } else {
            //do something else
        }
    });
    

    Or you can use $(window).width() to check the width of the viewport:

    var $window = $(window);
    $window.resize(function() {
        if($window.width() <= 480) {
            //do something
        } else {
            //do something else
        }
    });
    

    UPDATE

    You can always throttle your own event handler:

    var $window   = $(window),
        resize_ok = true,
        timer;
    
    timer = setInterval(function () {
        resize_ok = true;
    }, 250);
    
    $window.resize(function() {
        if (resize_ok === true) {
            resize_ok = false;
            if($window.width() <= 480) {
                //do something
            } else {
                //do something else
            }
        }
    });
    

    This will prevent the code in your resize event handler from running more than once every quarter second.

提交回复
热议问题