2013-08-19 1 views
1

이 작업을 수행하는 데 시간이 많이 걸립니다. 간단해야하지만 내가 시도한 모든 경로는 효과가 없습니다.jQuery를 사용하여 드롭 다운이있는 행을 필터링하십시오.

<script type="text/javascript"> 
    $(document).ready(function() { 

     //filter list by year 
     $(function() { 
      $("#ddYear").change(function (evt) { 
       var year = $("#ddYear").val(); 

       $('tr').show(); 

       $("td[id^='AccessRequestID']").each(function() { 
        alert("Checking " + this.val); 
        if ($(this).attr("class") == ".AR_" + year) { 
         alert("Hiding " + this.val); 
         $(this).parent().hide(); 
        } 
       }); 
      }); 
     }); 
    }); 
</script> 

을 그리고 여기 필터링하기 위해 노력하고있어 테이블의 : 내가 처음에이 같은 일을 시도

<div class="index-header">Select a Year to View: <%:Html.DropDownList("ddYear", Model.YearList, null %></div> 

<table id="arTable"> 
    <tr> 
     <th> 
      Year 
     </th> 
     <th> 
      Version 
     </th> 
     <th> 
      Name 
     </th> 

    </tr> 

    <% foreach (var item in Model.AccessRequests) { %> 

     <tr class="clickable"> 
      <td id="AccessRequestID<%=item.Access_Request_ID%>" class="<%:string.Format("AR_{0}", item.RECORD_YEAR) %>"> 
       <%: Html.DisplayFor(modelItem => item.RECORD_YEAR) %> 
      </td> 
      <td> 
       <%: Html.DisplayFor(modelItem => item.VERSION_NO) %> 
      </td> 
      <td> 
       <%: Html.DisplayFor(modelItem => item.EMPLOYEE_NAME) %> 
      </td> 
     </tr> 

    <% } %> 

</table> 

:

$("td[id^='AccessRequestID']").parent().hide().filter('.AR_' + year).show(); 

가 여기에 jQuery를 내가 지금 사용하고 있어요 그 행렬은 거대하게 필터링되었지만, 그것이 있어야 할 때 다시 되돌아 가지 않았습니다. 그래서 $("td[id^='AccessRequestID']").parent().show;을 먼저 다시 설정해 보았습니다.하지만 그 일은하지 않았습니다. (내 마지막 시도에서 볼 수 있듯이 .each()으로 시도해 보았습니다.) 어떤 조언이나 도움을 많이 주시면 감사하겠습니다!

답변

3

이 바이올렛을 시도하십시오 http://jsfiddle.net/96Evt/ 코드는 아래에 있으며 필자도 일부 데모 테이블 행을 추가했습니다.

$("#ddYear").on('change', function() { 
     var year = $("#ddYear").val(); 
     $('tr').show(); 

     $("td.AR").each(function (index, tdAR) { 
      if ($(tdAR).hasClass("AR_" + year)) { 
       $(tdAR).parent('tr').hide(); 
      } 
     }); 
}); 
+0

놀라운. 그게 효과가 ... 내가 시도한 여러 가지 접근법이 왜 그렇게되지 않았는가? 나는 꽤 난처한 상황이다! – morganpdx

+0

글쎄, 사실은 분명히 밝혀졌지만, 필자가 필요로했던 것과는 정반대로 작동했지만, if ($ (tdAR) .hasClass ("AR_"+ year) "+ 올해)) '그리고 그것은 위대한 작품 – morganpdx

+0

다행 당신을 위해 일하고있어. if ($ (this) .attr ("class") == "대신에 if ($ (this) .attr ("class ") ==".AR_ "+ year) AR_ "+ year)'('AR'의 infront 기간)이 영향을 미쳤을 수도 있습니다. 또한 필터 버전에서 필터는'td'보다는 부모'tr'에서 작동합니다. 희망이 도움이됩니다. R. –

1

작동해야합니다. 표시에서 Td1의 ID를 볼 수 있지만 어디서 [id^='AccessRequestID']입니까?

+0

아빠, AccessRequestID 여야합니다. 비주얼 스튜디오 복사 오류. 이제는 적절한 ID로 수정했습니다. 감사합니다! :) – morganpdx

+0

마크 업이 브라우저에서 렌더링 될 때이를 확인합니다. 아마도 어딘가에 차이가있을 것입니다. – beautifulcoder

+0

그래, 나는 지금하고있다. ... 나는 지금까지 볼 수있는 것을보고 아무 것도보고 있지 않다. – morganpdx

관련 문제