2012-04-24 5 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

디버거를 사용하여 코드를 단계별로 실행하십시오. –

+0

select # 3596과 같은 작업을 수행 할 필요가없는 ID 선택기가 가장 빠르기 때문에 필드 세트 선택기와 마찬가지로 # 3596을 수행 할 수 있습니다. 나는 그것이 문제라고 생각하지 않는다. 귀하의 신분증은 유효하지 않습니다. 이 질문을보십시오 : http://stackoverflow.com/questions/70579/what-are-valid-values-for-the-att-attribute-in-html – Patricia

답변

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

관련 문제