Javascript函数在调整大小时运行self

Javascript函数在调整大小时运行self,javascript,jquery,events,event-handling,jquery-events,Javascript,Jquery,Events,Event Handling,Jquery Events,我有一个函数,我通过$('.element').tileheightini()等元素在触发器上运行 该函数需要在窗口上运行。加载和窗口。调整大小。我想我可以在里面定义另一个函数并在那里运行它,但我想有一种方法可以使用这个来运行它自己或其他东西 我的职能: // master function for resizing tile elements $.fn.tileHeightInit = function ( args = { 'breakPoint' : breakP

我有一个函数,我通过
$('.element').tileheightini()等元素在触发器上运行

该函数需要在
窗口上运行。加载
窗口。调整大小
。我想我可以在里面定义另一个函数并在那里运行它,但我想有一种方法可以使用
这个
来运行它自己或其他东西

我的职能:

// master function for resizing tile elements
$.fn.tileHeightInit = function ( 
    args = {
        'breakPoint' : breakPoint,
        'container' : container,
        'squared' : squared,
        'blockMargin' : blockMargin,
    })
{
    var breakPoint = args['breakPoint'],
        container = args['container'],
        squared = args['squared'],
        blockMargin = args['blockMargin'];
    
    var gridElements = $(this);

    if (typeof(breakPoint)==='undefined') breakPoint = 767;

    if (typeof(container)==='undefined') container = 'body';

    if (typeof(squared)==='undefined') squared = true;

    if (typeof(blockMargin)==='undefined') blockMargin = 30;

    // return false if no elements found;
    if($(container).find(gridElements).length < 1){
        return false;
    }
    // run if window is larger than breakpoint
    if($(window).width() >= breakPoint){
        $(container).each(function(){
            // height reset. Allows tiles to become smaller on risizing.
            $(this).find(gridElements).each(function(){
                $(this).height('auto');
            })

            // Get an array of all element heights
            var elementHeights = $(this).find(gridElements).map(function() {
                // block height datafield
                var dataHeight = $(this).data('block-height');
                // block widht datafield
                var dataWidth = $(this).data('block-width');
                
                // if squared is enabled
                if(squared === true){

                    // if block is wider than tall, return width as height parameter for quadratic tiles
                    if($(this).height() < $(this).outerWidth() && dataWidth == 1){
                        // return height divided by data-height
                        return $(this).outerWidth();
                    } else{
                        // return width, since tile is wider than it's tall
                        return $(this).height() / dataHeight;
                    }
                } else{
                    // return base height divided by block size;
                    return $(this).height() / dataHeight;
                }
            }).get();

            // Math.max takes a variable number of arguments
            // `apply` is equivalent to passing each height as an argument
            var maxHeight = Math.max.apply(null, elementHeights);

            // Set each height to the max height                
            $(this).find(gridElements).each(function(){
                // variable for data-height attribute
                var dataHeight = $(this).data('block-height');

                // the missing margin the block would have had if split into more
                var marginDiff = (dataHeight - 1) * blockMargin;
                
                // set height to highest tile * data-height attribute + the margin difference between current block and surrounding blocks
                $(this).height((maxHeight * dataHeight) + marginDiff);
                

            });
        })
    } else{
        // if smaller than breakpoint (colons collapsed)
        $(container).find(gridElements).each(function(){
            // reset height
            $(this).height('auto');
        })
    }
} //  END tileHeightInit();


$(window).resize(function(){
    $('li').tileHeightInit({
        'breakPoint': 500,
    });
})
//调整磁贴元素大小的主函数
$.fn.tileheightini=函数(
args={
“断点”:断点,
“容器”:容器,
“平方”:平方,
“区块边际”:区块边际,
})
{
var breakPoint=args['breakPoint'],
container=args['container'],
平方=args['squared'],
blockMargin=args['blockMargin'];
var gridElements=$(这是);
if(typeof(breakPoint)=='undefined')断点=767;
if(typeof(container)=='undefined')container='body';
如果(typeof(squared)=='undefined')squared=true;
如果(typeof(blockMargin)==“未定义”)blockMargin=30;
//如果未找到元素,则返回false;
if($(容器).find(网格元素).length<1){
返回false;
}
//如果窗口大于断点,则运行
if($(窗口).width()>=断点){
$(容器)。每个(函数(){
//高度重置。允许瓷砖在升级时变小。
$(this).find(gridElements).each(function(){
$(this.height('auto');
})
//获取所有元素高度的数组
var elementHeights=$(this.find(gridElements.map)(function()){
//块高度数据字段
var dataHeight=$(this).data('block-height');
//块宽度数据字段
var dataWidth=$(this).data('block-width');
//如果启用了平方
如果(平方===真){
//如果块的宽度大于高度,则返回宽度作为二次平铺的高度参数
if($(this).height()<$(this).outerWidth()和&dataWidth==1){
//返回高度除以数据高度
返回$(this.outerWidth();
}否则{
//返回宽度,因为瓷砖比它的高度宽
返回$(this).height()/dataHeight;
}
}否则{
//返回基准高度除以块大小;
返回$(this).height()/dataHeight;
}
}).get();
//max接受数量可变的参数
//“apply”相当于将每个高度作为参数传递
var maxHeight=Math.max.apply(null,elementheight);
//将每个高度设置为最大高度
$(this).find(gridElements).each(function(){
//数据高度属性的变量
var dataHeight=$(this).data('block-height');
//如果将该区块分割成更多的区块,则该区块将有缺失的利润
var marginDiff=(数据高度-1)*区块保证金;
//将高度设置为最高平铺*数据高度属性+当前块和周围块之间的边距差
$(this).height((maxHeight*dataHeight)+marginDiff);
});
})
}否则{
//如果小于断点(冒号折叠)
$(容器).find(gridElements.each(函数()){
//重置高度
$(this.height('auto');
})
}
}//结束tileheightini();
$(窗口)。调整大小(函数(){
美元('li')。瓦氏重量({
“断点”:500,
});
})

基本上,我将在多个元素上运行此函数,使它们全部写入
resize
load
,并且可能会有更多事件看起来效率低下。

考虑使用去盎司函数来限制函数的触发速率:
$(窗口)。resize($.fn.tileheightini.bind(this))内部tileHeightInit@JonasW. 或者他可以简单地将他的
函数{}
转换成
()=>{}
并省略
绑定(这个)
部分。@JonasW。太棒了,正是我想要的!我还实现了一个去Bounce,在几秒钟内观察函数触发4000次@AnteJablanAdamović你能用
()=>{}
举个例子吗?我应该改变它吗?在我定义的代码> $.fn.TiLeHeITiNIT =函数< /代码>?考虑使用DeBung函数来限制函数可以触发的速率:<代码> $(window)。调整大小($.fn.TiLeHeItInI.绑定(this));<代码>内部tileHeightInit@JonasW. 或者他可以简单地将他的
函数{}
转换成
()=>{}
并省略
绑定(这个)
部分。@JonasW。太棒了,正是我想要的!我还实现了一个去Bounce,在几秒钟内观察函数触发4000次@AnteJablanAdamović你能用
()=>{}
举个例子吗?我应该在定义
$.fn.tileheightini=function
的地方更改它吗?