优化jQuery函数

时间:2011-05-18 13:07:21

标签: jquery query-optimization

可以优化和缩小此样本函数吗?我怎么能这样做?

$(function () {
    $("#options").change(function () {
        var message_index = $("#options").val();
        if (message_index == 0) {

            $("#display_image").show();
            $("#display_flash, #display_youtube, #display_google").hide();

        } else if (message_index == 1) {

            $("#display_flash").show();
            $("#display_image, #display_youtube, #display_google").hide();

        } else if (message_index == 2) {

            $("#display_youtube").show();
            $("#display_image, #display_flash, #display_google").hide();

        } else if (message_index == 3) {

            $("#display_google").show();
            $("#display_image, #display_flash, #display_youtube").hide();

        } else {

            $("#display_image, #display_flash, #display_youtube, #display_google").hide();

        }

    });

});

6 个答案:

答案 0 :(得分:5)

$(function () {

    var $displays = $("#display_flash, #display_youtube, #display_google, #display_image"),
        toShow = ['image','flash','youtube','google'];
    $("#options").change(function () {
        $displays.hide();
        $("#display_"+toShow[$(this).val()]).show();
    });

});

答案 1 :(得分:2)

没有太多的优化,但肯定更清洁的IMO:

$(function () {
    $("#options").change(function () {
        // hide everything
        $("#display_image, #display_flash, #display_youtube, #display_google").hide();

        switch ($("#options").val()) {
            case 0:
                $("#display_image").show();
                break;
            case 1:
                $("#display_flash").show();
                break;
            case 2:
                $("#display_youtube").show();
                break;
            case 3:
                $("#display_google").show();
                break;
        }
    });

});

要缩小,请使用http://jscompress.com/

答案 2 :(得分:1)

如果您想缩小代码,请尝试将其放入此处 - http://www.minifyjavascript.com/

答案 3 :(得分:1)

使用您当前的代码,您可以执行以下操作:

$("#options").change(function () {
    var message_index = $("#options").val();
    var elemIds=[
        '#display_image', 
        '#display_flash', 
        '#display_youtube', 
        '#display_google'];
    $(elemIds.join(',')).hide();
    if (elemIds[message_index]) {
        $(elemIds[message_index]).show();
    }
});

您尚未提供正在运行此标记的标记,甚至可以基于此进一步优化。也许为那些可显示的元素添加一个公共类。如果元素在标记中的顺序正确(与message_index顺序相同),则可以进一步优化。

对于缩小,有几种工具可供使用,其他工具为您提供了一些工具。

答案 4 :(得分:0)

您可以从以下网址获取想法:

Minify jQuery based js files

How to minify jquery files?

答案 5 :(得分:0)

用switch语句替换你的if语句