2012-02-06 1 views
1

특히, 하나의 값이 변경 될 때마다 페이지의 모든 요소를 ​​반복하고 싶습니다.

그래서 내 코드를 의역하기 위해 내가 가진 모든이 잘 실행하지만 '다른 것들'은 여기에 전체 코드의

을 발생하지 않습니다

$('select.filterbox').change(function() { 
    // stuff 
    $('select.filterbox').each(function() { 
    // other stuff 
    }); 
}); 

'물건'

 // On Filterbox Change 
    $j('select.filterbox').change(function() { 

     // Show All Rows 
     $j('#table1 tr').show(); 

     // For Each Filterbox 
     $j('select.filterbox').each(function() { 

      var selVal = $j(this).attr('value'); 
      var col = $j(this).closest('th').parent().children().index($j(this).closest('th')); 
      alert('Column '+val+' : '+selVal); 

      // If Selected Value Not Empty 
      if(selVal != "") { 

       // For Each Row 
       $j('#table1 tr').each(function() { 
        var $tds = $j(this).find('td'); 
        var cellVal = $tds.eq(col).text(); 
        cellVal = $j.trim(cellVal); 

        // If td text != selected 
        if(cellVal != selVal) { 

         // Hide this row 
         $j(this).hide(); 
        } 
       }); 
      } 
     }); 
    }); 
+5

게시 한 코드에 아무런 문제가 없는데,'stuff'와'other stuff'가 실행되어야합니다. –

+0

jsFiddle을 만드시겠습니까? '다른 물건'이 코딩되는 방식이 잘못되었을 수 있습니다. – millimoose

+0

작동하지 않을 수도 있다고 생각하는 것은 무엇입니까? 다른 말로하면, 그것이 작동하지 않을 수 있다고 생각합니까? – Pointy

답변

1

답변 : 가능합니다. 나는 최근에 그런 것들을 많이했습니다. 실제로 코드가이를 수행해야합니다. 코드에서 작지만 중요한 오류가 발생했을 가능성이 높습니다.이 오류는 추적하여 수정해야합니다. 나는 최근에 인 많은 것들을 과 같이했습니다.

더 유용한 답변 : 고장이 어디 있는지 알아 내려고합니다. "$ ('select.filterbox'). each()"를 호출하여 페이지의 큰 덩어리에서 .hide()를 호출하십시오. 코드 줄이 호출되고 있는지 확인하십시오. 호출중인 경우 "$ ('select.filterbox'). each()"를 호출 한 다음 hide() 호출을 호출합니다. 작동한다면 적어도 한 번 실행되고 있음을 알 수 있습니다. hide() 호출을 (this) .hide()로 변경하고 식별 된 것을 볼 수 있는지 확인하십시오. 일단 당신이 실패한 부분을 좁히면, 당신이 뭘 잘못했는지 파악하는 것이 훨씬 쉬울 것입니다.

+0

감사합니다. "발", 내가 정의한 변수를 언급했다 * facepalm * 모두에게 감사합니다. – dru

1

이렇게 할 수는 있지만 많은 요소에 별도의 이벤트 처리기를 연결하는 것은 좋지 않습니다. 이벤트 버블 링을 활용하고 부모 컨테이너에 단일 처리기를 연결하면됩니다. 예 :

$("#filters").change(function (evt) { 
    // evt.target will give you actual element that changed 
    $("#filters select.filterbox").each(function() { 
     // other stuff 
    }); 
}); 
+0

이렇게하려면 각 select에 id = "filters"를 지정해야합니다. – dru

+0

아니요, 모든 ''아이들을 모두 포함 할만큼 충분히 구체적 일 필요가 있습니다. –

관련 문제