有些人可以在下面的代码中找出我做错了吗?我知道这不是最优雅的代码,但是我现在做了五件事,并且我认为我可以快速地将这个简单地敲掉,以便将它从我的盘子里拿出来。
我想做的只是>>如果选择的项目类型等于特定值,则显示字段集,如果它不等于该值,则隐藏字段集。很简单吧?如果选择的值不匹配,我无法隐藏字段集。
请注意,我是jquery的新手,但这是一个基本的if / else - 我在这里做错了什么?提前谢谢。
$('fieldset#section-841', 'fieldset#section-837' ).hide();
var DM_projtype = new Array(
{value : 'Direct Mail', sect_id : 'fieldset#section-841'},
{value : 'Multiple items', sect_id : 'fieldset#section-837'}
);
$('select#3596').change(function() {
var getDM_projType = $(this).val();
var sect_id = '';
for (var i = 0; i < DM_projtype.length; ++i)
{
if (DM_projtype[i].value == "Direct Mail" )
{
sect_id = DM_projtype[i].sect_id;
$(sect_id).show();
}
else
{
$('fieldset#section-841').hide();
}
if (DM_projtype[i].value == "Multiple items" )
{
sect_id = DM_projtype[i].sect_id;
$(sect_id).show();
}
else
{
$('fieldset#section-837').hide();
}
}
});
答案 0 :(得分:2)
您已经根据逻辑构建了代码 - 数组的每个元素都将通过循环进行处理,因此您同时执行包含的每个块集的if和else。你应该这样做:
$('select#3596').on('change', function() // do .change() if using a lower jQuery version
{
var thisVal = $(this).val(); // Assuming this returns 'Direct Mail' or 'Multiple Items'
$(DM_projtype).each(function()
{
$(this.sect_id).hide();
if(this.value == thisVal)
$(this.sect_id).show();
});
});