Javascript 如何编写这个较短的jquery?

Javascript 如何编写这个较短的jquery?,javascript,jquery,short,Javascript,Jquery,Short,我想缩短这个代码,但idk如何 var theme; theme = 'summer' // for set default in source code if ( theme == 'summer' ) { $('.paper').css({'background-image':'url("summer.jpg")'}); } if ( theme == 'spring' ) {

我想缩短这个代码,但idk如何

    var theme;

    theme = 'summer' // for set default in source code

        if (  theme == 'summer' ) {
            $('.paper').css({'background-image':'url("summer.jpg")'});
            }
        if ( theme == 'spring' ) {
            $('.paper').css({'background-image':'url("spring.jpg")'});
        }

    // and set theme when user select ..

    $('#select ul li').click(function(){

        theme = $(this).attr('class');

        if (  theme == 'summer' ) {
            $('.paper').css({'background-image':'url("summer.jpg")'});
        }
        if ( theme == 'spring' ) {
            $('.paper').css({'background-image':'url("spring.jpg")'});
        }

    });
这段代码正常工作,但我想要这样的东西

    var theme;
    theme = 'summer'
    $('#select ul li').click(function(){
       theme = $(this).attr('class');
    });

    if (  theme == 'summer' ) {
        $('.paper').css({'background-image':'url("summer.jpg")'});
        }
    if ( theme == 'spring' ) {
        $('.paper').css({'background-image':'url("spring.jpg")'});
    }

当用户选择某个内容但不更改纸张背景图像时,主题变量正在更改..:(

无需对代码进行根本性更改,您可以将进行更改的部件移动到其自身的功能,然后在启动时调用该功能并单击:

function setTheme(theme) {
    if (theme == 'summer') {
        $('.paper').css({'background-image':'url("summer.jpg")'});
    }
    if (theme == 'spring') {
        $('.paper').css({'background-image':'url("spring.jpg")'});
    }
}

$(function() { 
    // change on click
    $('#select ul li').click(function(){
        theme = $(this).attr('class');
        setTheme(theme);
    });

    // and on startup
    setTheme('summer');
});
当然,还有很多其他方法可以改进代码并减少代码内容


一个建议是使用CSS更改背景图像,然后添加/删除类;但我认为问题的目的更多地是使用问题中的代码作为示例,而不是减少最终代码。

这更详细,但也更灵活

$(“#选择”)。在(“单击”,“ul li”,函数(e)上{
const season=$(此).data(“季节”)
$(this).this().each(function()){
$('.paper').removeClass($(this.data)(“季节”);
$(此).removeClass(“活动”);
})
$('.paper').addClass(季节);
$(此).addClass(“活动”);
})
.parent().find(“.active”).trigger(“click”);
.paper.summer{
背景图片:url(summer.jpg);
背景色:红色;
}
.纸.弹簧{
背景图片:url(summer.jpg);
背景颜色:绿色;
}
.主动{
字体大小:粗体
}

  • 春季
  • 夏季

这是一些文本
您现在只更改单击处理程序中的变量值,但不再更新任何其他内容。如果您有两次相同的代码,请将其放入函数中并调用该函数。删除双空格将使其缩短查看
If
语句中两行代码之间的更改;文件ame.该文件名与
主题
变量相同。因此,如果使用字符串连接,则这可以是一行代码。类似地,将重复的逻辑放在函数中,并在所需的位置调用它。如何:
函数setTheme(theme){$('.paper').css({'background-image':'url(`${theme}.jpg`)});}
TY感谢您的帮助♥ .