可以优化和缩小此样本函数吗?我怎么能这样做?
$(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();
}
});
});
答案 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)
答案 5 :(得分:0)
用switch语句替换你的if语句