为什么我的jquery if / else代码没有隐藏/显示?

时间:2012-04-24 15:02:23

标签: jquery

有些人可以在下面的代码中找出我做错了吗?我知道这不是最优雅的代码,但是我现在做了五件事,并且我认为我可以快速地将这个简单地敲掉,以便将它从我的盘子里拿出来。

我想做的只是>>如果选择的项目类型等于特定值,则显示字段集,如果它不等于该值,则隐藏字段集。很简单吧?如果选择的值不匹配,我无法隐藏字段集。

请注意,我是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(); 
                }
       }
  });

1 个答案:

答案 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();
    });
});