onresize事件触发多次的问题

wyumening 2014-08-02 12:32:09
因为onresize事件触发多次,所以从网上找到了 一个函数来延迟执行,可是使用的时候发现没有效果,代码如下:
$(function () {
//设置 内容 宽
setFitWH();
var debounce = function (func, threshold, execAsap) {
var timeout;
return function debounced() {
var obj = this, args = arguments;
function delayed() {
if (!execAsap)
func.apply(obj, args);
timeout = null;
};
if (timeout)
clearTimeout(timeout);
else if (execAsap)
func.apply(obj, args);
timeout = setTimeout(delayed, threshold || 100);
};
// alert("yes");

}


$(window).resize(function () {
debounce(function () {
$("[class='panel-body panel-body-noheader panel-body-noborder']").css("width:'atuo',height:'auto'");

}, 100, true);
});
});

试过换成window.onresize来调用,发现不会触发,不知道是哪里出了问题,在firebug的控制台中也没发现错误,请帮我看看怎么回事,多谢了!
...全文
333 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
上海程序员3 2014-08-03
  • 打赏
  • 举报
回复
为什么要整那么多function,多次一举!
bjwtufv 2014-08-03
  • 打赏
  • 举报
回复

$(function () {
    //设置 内容 宽
    setFitWH();
    var debounce = function (func, threshold, execAsap) {
        var timeout;
        return function debounced() {
            var obj = this, args = arguments;
            function delayed() {
                if (!execAsap)
                    func.apply(obj, args);
                timeout = null;
            };
            if (timeout)
                clearTimeout(timeout);
            else if (execAsap)
                func.apply(obj, args);
            timeout = setTimeout(delayed, threshold || 100);
        };
       // alert("yes");
 
    }
     
     
    $(window).resize(function () {
        debounce(function () {
             $("[class='panel-body panel-body-noheader panel-body-noborder']").css("width:'atuo',height:'auto'");
            
        }, 100, true);
    });
}());
    
KK3K2005 2014-08-02
  • 打赏
  • 举报
回复
var myfunc = debounce(function () { $("[class='panel-body panel-body-noheader panel-body-noborder']").css("width:'atuo',height:'auto'"); }, 100, true); $(window).resize(function () { myfunc(); }); 一个是楼上说的 一个是不管怎么看 匿名函数都不能放在一个被反复调用的地方 进行唯一使用
Go 旅城通票 2014-08-02
  • 打赏
  • 举报
回复
debounce只是返回一个匿名函数,你要执行这个函数才行 $(window).resize(function () { debounce(function () { $("[class='panel-body panel-body-noheader panel-body-noborder']").css("width:'atuo',height:'auto'"); }, 100, true)(); });

87,909

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧