当css值改变时触发事件

时间:2011-02-23 21:56:09

标签: javascript jquery short

如何使用jquery在特定CSS变量更改时调用函数(例如:特定div的高度)?

2 个答案:

答案 0 :(得分:0)

没有“原生”解决方案。如果您严格使用jQuery来操纵css属性,那么函数 hook 或( duck punshing )是您的最佳选择:

(function($) {
    var _oldcss = $.fn.css;
    $.fn.css = function() {
        if( typeof arguments[0] === 'string' ) {
            console.log('css property ', arguments[0], ' is about to change for elem: ', this);
        }

        return _oldcss.apply(this, arguments);
    };
}(jQuery));

这当然是不完整的。如果arguments[0]object,则需要迭代键/值。但这是基本原则。

此解决方案的好处是,即使.height()也会调用.css()。所以

$('div:eq(2)').height(55);

将触发 css属性高度即将更改为elem:[div#custom-header]

答案 1 :(得分:0)

http://darcyclarke.me/development/detect-attribute-changes-with-jquery/有一些插件方法以及针对不同浏览器的怪癖。它模仿所有浏览器中的DOMAttrModified事件。