2013-05-10 2 views
1

각 테이블에 여러 개의 드롭 다운이 가능한 여러 개의 테이블이 페이지에 있습니다. 테이블과 드롭 다운은 자동으로 생성됩니다. 대상으로하려는 테이블에는 숫자 ID가 있으며 드롭 다운의 모든 값은 숫자입니다. 내가하고 싶은 테이블 중 하나에 대한jquery 테이블에 여분의 드롭 다운을 숨기기

HTML 샘플 코드 대상에 테이블의 드롭 다운 중 하나가 내가 다른 드롭 다운을 숨기고 싶은 선택되면

<table id="15"> 
<tr> 
    <td> 
    <div id="dd_4_0"> 
    <select id="4_0"> 
    <option value=""></option> 
    <option value="18">VNDR64324</option> 
    <option value="21">MFG5321</option> 
    <option value="27">OTHER</option> 
    </select> 
    </div> 
    </td> 
</tr> 
<tr> 
    <td> 
    <div id="dd_2_6"> 
    <select id="2_6"> 
    <option value=""></option> 
    <option value="12">VN32R2345</option> 
    <option value="21">5678</option> 
    <option value="27">NEM</option> 
    </select> 
    </div> 
    </td> 
</tr> 
</table> 

. 작동하는 코드가 있지만 가능한 경우 수행하지 않고 루프를 반복하는 코드가 많이 있습니다. 이것을 작성하는 더 깨끗한 방법이 있습니까?

$('table').click(function() { 
    if($.isNumeric(this.id)) 
     dd = $("#" + this.id + " select"); 
     $.each(dd, function(){ 
      if($.isNumeric($(this).val())) 
      { 
       selectedId = this.id; 
       $.each(dd, function(){ 
        if(this.id != selectedId) 
         $('#dd_' + this.id).hide(); 
       }); 

      } 
     }); 
}); 
+0

테이블을 생성하는 코드를 수정할 권한이 없습니까? 몇 개의 클래스를 추가하면 실제로 당신의 삶이 더 쉬워 질 수 있습니다. –

+0

'2_6'은 숫자가 아닙니다. – Barmar

+0

예, 모든 항목이 있으므로 아무 것도 수정할 수 없습니다. 그러나, 내 드롭 다운은 jquery 플러그인 인 드롭 다운을 모두 선택하고 자체 클래스를 추가하고 클래스 추가를 어렵게하는 몇 가지 복제를 수행한다고 말했습니다. – jessier3

답변

0

I는 관련 테이블에 공통 클래스를 추가하고 이런 짓을 했을까 : 테이블의 드롭 다운 중 하나가 선택되면

$(".table_class select").change(function(){ 
    var $this = $(this); 

    if($this.val() != ""){ 
     $this.closest(".table_class").find("select").not($this).hide(); 
    } else { 
     // if you want, re-show them if the select is de-selected 
     $this.closest(".table_class").find("select").show(); 
    } 
}); 
+0

이 두 가지 솔루션 모두 완벽하게 이해할 수 있으며 작동해야하지만 아직받지 못했습니다. 아마 문제를 일으키는 내 코드에서 뭔가. 그래도 입력 해 주셔서 감사합니다! – jessier3

0

내가 다른 드롭 다운을 숨길하고 싶습니다.

난 당신 그러나 가장 짧은 방법을 (내가 생각할 수 있다는 ..) 그러나이

$('select').change(function(){ 
    $(this).parents('tr').find('select').not($(this)).hide(); 
}); 

을 시도 select

change() 이벤트를 호출합니다 얻으면 내가 모르는

이 옵션은 문서에있는 모든 선택 요소를 선택합니다. 테이블 외부 또는 페이지의 다른 곳에서 다른 선택 요소가 없다고 확신하는 경우 ... 작동해야합니다. 그렇지 않으면 각 클래스에 클래스를 추가 할 수 있습니다 해당 테이블에 대한 테이블 및 호출 선택기 만 선택하십시오 ...

working fiddle here

+0

테이블 예에서 실수를했습니다. 모든 드롭 다운은 자체 tr 태그와 자체 tds에 있습니다. 테이블을 대신 참조하기 위해 부모 ('tr')를 수정하는 방법이 있습니까? – jessier3

+0

예 ...'tr'을'table'으로 바꾸십시오 ...하지만이 테이블을 감싸는 테이블이 없으면 모든 부모'table'을 선택합니다. example fiddle http://jsfiddle.net/bipen/TD4cH/1/ – bipen

+0

이 두 가지 해결책은 모두 의미가 있으며 작동해야하지만 아직 이해하지 못했습니다. 아마 문제를 일으키는 내 코드에서 뭔가. 그래도 입력 해 주셔서 감사합니다! – jessier3

관련 문제