2012-04-24 89 views
0

請問下面的代碼可以發現我做錯了什麼嗎?我知道這不是最優雅的代碼,但我目前正在做五件事情,並且認爲我可以迅速將這個簡單的代碼敲掉,以便將它從我的盤子中取出。爲什麼我的jquery if/else代碼沒有隱藏/顯示?

所有我想要做的是,如果>>所選項目類型等於一個特定的值,顯示一個字段,如果它不等於該值,隱藏字段集。很簡單的權利?如果所選值不匹配,我無法隱藏字段集。

你要知道,我是新來的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(); 
       } 
     } 
    }); 
+2

使用調試器來逐步執行代碼。 – 2012-04-24 15:04:35

+0

你不需要像選擇#3596一樣的選擇id選擇器是最快的,所以你可以做#3596,和你的fieldset選擇器一樣。我不認爲這是問題。你的ID是無效的。看到這個問題:http://stackoverflow.com/questions/70579/what-are-valid-values-for-the-id-attribute-in-html – Patricia 2012-04-24 15:07:51

回答

2

你對邏輯結構的代碼看起來 - 你的陣列中的每個元素是要通過循環處理,所以執行了這兩項的,如果和其他設置你包含每個塊的。您應該這樣做:

$('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(); 
    }); 
}); 
+0

天哪 - 謝謝你TEJS - 這是我的作品完全辦法想要它,並感謝你解釋我做錯了什麼。 – user1176783 2012-04-24 15:19:48

相關問題