2010-04-16 2 views
1

select 양식 요소의 change 이벤트에서 호출되는 javascript 함수가 있습니다. 따라서 js의 "this"변수는 select 요소를 참조합니다.jQuery를 사용하여 특정 클래스 이름을 가진 객체의 "조상"을 얻는 신뢰할 수있는 방법

이 선택 요소는 tr 태그의 td 태그에 있습니다. tr 태그의 클래스 이름은 "FilterDetailsRow"입니다.

지금, 나는 테스트했습니다, 나는이 구문을 사용하는 경우 :

var filterRow = $(this).parent().parent(); 

그것은 내가 원하는 걸 얻을 수 있습니다. 그러나 "FilterDetailsRow"클래스 이름을 찾을 때까지 "this"로 시작하는 jQuery에 더 좋은 방법이 있습니까?

다음은 내가 생각해 낸 것입니다. 나는 바퀴를 재발 명하지 않도록하고 싶다.

function GetFilterDetailsRowOfObject(o) { 
    if (o) { 
     if (o.parent()[0].className.indexOf("FilterDetailsRow") != -1) 
      return o; 
     else 
      return GetFilterDetailsRowOfObject(o.parent()); 
    } else { 
     return null; 
    } 
} 

어떤 조언을 주셔서 감사합니다.

답변

5

당신은 첫 번째 일치 조상을 찾기 위해 closest를 사용할 수 있습니다

var filterRow = $(this).closest('.FilterDetailsRow'); 
1

jQuery를 1.4에서 당신이 parentsUntil를 사용할 수 있습니다. 당신을 위해 그것은 무언가 일 것입니다

$(this).parentsUntil('.FilterDetailsRow'); 
+0

질문은 무엇을 요구하고 있습니다. 'parentsUntil' 문서에서 : "일치하는 요소의 현재 세트에서 각 요소의 조상을 가져옵니다. 선택자와 일치하는 요소는 포함하지 않습니다." – LukeH

+0

closest()가 가장 좋습니다. 그것은 현재 요소로 시작하지만 (첫 번째 요소로 시작하는 parents()와 달리), 0 또는 하나의 객체를 반환합니다. – tbeseda

+0

@ 루케, 아, 맞아. 이것을 사용하려면 레벨을 한 단계 더 높이고 반환 된 jQuery 객체에서 올바른 부모를 선택해야합니다. 귀하의 대답은 훨씬 더 잘 작동합니다. – rosscj2533

관련 문제