将相同的函数绑定到具有不同参数的窗口调整大小事件
Posted
技术标签:
【中文标题】将相同的函数绑定到具有不同参数的窗口调整大小事件【英文标题】:Binding same function to window resize event with different arguments 【发布时间】:2013-10-27 10:49:04 【问题描述】:我正在制作一个简单的 JS 插件来垂直调整对象的大小。它工作正常,直到调整大小事件 - 其中$flexParent
似乎被设置为所有绑定的初始.each()
函数中的最后一个$flexParent
。因此,对于传递给插件的三个“flexParent”,只有最后一个在调整大小事件上起作用;仅 3 次。显然我误解了这里的绑定,但我会很感激一些澄清!
【问题讨论】:
【参考方案1】:$flexParent
被声明为全局变量,因此它在函数调用之间共享。当窗口调整大小回调被调用时,全局 $flexParent 变量将指向最后一个元素。
将您的代码更改为:
return this.each(function()
var $flexParent = $(this); // <-- added var here
main($flexParent);
$(window).resize(function()
main($flexParent);
);
);
这使得$flexParent
成为传递给每个函数的局部变量,因此每个元素都有一个变量。
【讨论】:
以上是关于将相同的函数绑定到具有不同参数的窗口调整大小事件的主要内容,如果未能解决你的问题,请参考以下文章
使用与具有不同列数的另一个QGridLayout相同的列间距
何时使用“带有(... ms)延迟的JavaScript窗口调整大小事件”是有益的