我怎么能写这个jQuery片段更漂亮

时间:2011-01-04 11:00:10

标签: jquery events function

这两个函数应该在加载和调整大小时触发。我想知道如何写它更紧凑和美丽。有什么想法吗?

$(document).ready(function() {
    fullScreen();
    footer();
    $(window).resize(function() {
        fullScreen();
        footer();
    });
});

5 个答案:

答案 0 :(得分:6)

您可以在注册处理程序后立即触发resize事件:

$(document).ready(function() {
    $(window).resize(function() {  // Register handler.
        fullScreen();
        footer();
    }).resize();                   // Trigger event.
});

答案 1 :(得分:4)

嗯,你可以将它们组合成一个功能,但我不确定它是否更“漂亮”:

jQuery(function($) {

    both();
    $(window).resize(both);

    function both() {
        fullScreen();
        footer();
    }
});

它确实解决了不重复自己的问题。

偏离主题:我还将$(document).ready(function(){...切换为jQuery(function($){...。它做了同样的事情,但是引用的代码与noConflict兼容,如果它有用的话。如果您永远不会想要noConflict兼容性,那么您可以使用$(function(){...代替,但是,嘿,还有六个额外的字符......

答案 2 :(得分:2)

$(function() {
    function both() {
        fullScreen();
        footer();
    }

    both();
    $(window).resize(both);
});

答案 3 :(得分:1)

@ T.J。 Crowder的回答(对另一种方法的调用)看起来是一个理想的解决方案。

对新方法的调用会捕获对这两种方法的调用的意图,使其功能

此外,如果您需要更改加载或调整大小时的操作,您只需在一种方法中更改它,使其可维护

有意义的名称,例如描述意图的readjustLayoutAfterResize使其可读

功能性,可维护性和可读性对我来说是美丽的,我确信无论谁维护它。

答案 4 :(得分:0)

$(document).ready(function () {
        var doStuff = function () {
            fullScreen();
            footer();
        };
        doStuff();

        $(window).resize(function () {
            doStuff();
        });
    });