javascript - 当某些 dom 元素改变高度时的 jQuery 事件

标签 javascript jquery dom jquery-events

当某些(任何一个)元素改变其自高度度时,有什么方法可以设置 jQuery 事件吗?

我真的不知道怎么才能开火

喜欢:

$('body *').onHeightChange(function(){

//do somenthing
});

最佳答案

每当你做一些改变元素高度的事情时,触发一个事件。

$("#somelement").slideDown().trigger("heightchange");

现在你可以绑定(bind)到那个:

$("body").on("heightchange",function(e){
    var $el = $(e.target); // the element that has a new height.
});

您甚至可以对许多可以更改高度的 jQuery 方法进行 monkeypatch,并让它们在使用该方法之前和之后测试高度并相应地触发事件。下面是一个未经测试的例子

var topatch = ["slideup","slidedown","height","width","attr","css","animate"];
$.each(topatch,function(i,method){
    var oldfn = $.fn[method];
    $.fn[method] = function(){
        return this.each(function(){
            var $this = $(this), currHeight = $this.css("height"),
                result = oldfn.apply($this,arguments); 
            // check for promise object to deal with animations
            if ( $.isFunction(result.promise) ) {
                result.promise().done(function(){
                    if ( currHeight != $this.css("height") ) {
                        $this.trigger("heightchange");
                    }
                });
                return;
            }
            if ( currHeight != $this.css("height") ) {
                $this.trigger("heightchange");
            }            
        });
    };
});​

关于javascript - 当某些 dom 元素改变高度时的 jQuery 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13936273/

相关文章:

javascript - 用于自定义 javascript 函数的 Visual Studio Intellisense

javascript - jQuery 切换持续时间未设置

javascript - Sencha EXT js 无法解析文件 Ext.dom.ButtonElement 的依赖关系 Ext.dom.Element

javascript - 链接多个 firebase 操作和回滚

javascript - AJAX POST 方法传递给 C# MVC Controller 方法的小问题

javascript - 在 JQuery/Javascript 中使用暂停/播放图标实现背景音乐

php - 如何从 DomDocument::saveHTML 中删除换行符

java - 以XML格式将特殊字符从java传递到jsp

javascript - 从 Shoutcast 读取歌曲

javascript - 单击另一个 DIV 后恢复翻转