2013-11-24 34 views
2

简化代码,我有这样的脚本:名为自调用函数

function fixHeight() { 
    $(".sidebar-mainbox-container").height($(window).height()); 
}) 

fixHeight(); 

$(window).on("resize", function() { 
    fixHeight(); 
}) 

我正在寻找一种方法使用自调用函数来简化它,然后把它在resize事件。
我已经试过这一个:

var fixHeight = (function() { 
    $(".sidebar-mainbox-container").height($(window).height()); 
})(); 
$(window).on("resize", function() { 
    fixHeight(); 
}) 

但这种方式自我调用函数的值分配给fixHeight,这是行不通的。
如果我删除自调用部分...

var fixHeight = (function() { 
    $(".sidebar-mainbox-container").height($(window).height()); 
}); 
$(window).on("resize", function() { 
    fixHeight(); 
}) 

那么功能仅在我把它的大小调整,这是不好的。

如何简化此代码以避免执行此类简单任务的3个元素?

+2

仅供参考,'$(窗口)。在( “调整大小”,函数(){fixHeight();});'可以更简洁地写作'$(窗口)。在( “调整大小”, fixHeight);'。 –

回答

4

这有什么错

$(window).on("resize", function() { 
    $(".sidebar-mainbox-container").height($(this).height()); 
}); 

为了避免额外的函数调用,只需在注册后立即触发事件。

$(window).on("resize", /* ... */).trigger("resize"); 
+0

该功能只能在调整大小事件时调用。问题是如何立即调用它**和**调整大小事件。 – Quentin

+2

'$(window).on(“resize”,...).trigger(“resize”);'当然 – Tomalak

+0

谢谢触发功能的作品,你可以更新你的答案,所以我可以设置它是正确的? –