2013-03-18 1 views
4

jquery closest 명령을 사용하여 요소에 특정 형제가있는 경우 특정 요소를 찾으려고합니다. 나는 다른 선택자들과 놀고 있었지만 아직 내가 원하는 것을하지는 못했습니다. 이 형제가 표시된 이후 구조가 내가 표시된 범위에서 시작하여 가장 가까운 실행 한 경우 다음jquery closest()를 사용하여 알려진 형제와 가장 가까운 요소 찾기

<div> 
    <table> 
     <tr> 
      <td> 
        <span a>cell 1</span> 
        <span>cell 2</span> 
      </td> 
      <td siblingmatch="true"> 
        <span b>cell 1</span> 
        <span>cell 2</span> 
      </td> 
     </tr> 
    </table> 

    <span siblingmatch="true">test 1</span> 
</div> 

같은 것을 있었다면

그래서 예를 들어, 나는 그것을 반환 할 것이라고는 부모 TD이다 siblingmatch 특성을 사용합니다. 그러나 b로 표시된 스팬에서 시작하여 동일한 명령을 실행 한 경우 siblingmatch 속성으로 표시된 형제가있는 첫 번째 부모이므로 table 태그를 반환해야합니다.

+1

실제 질문이 있으십니까? –

+1

주변에서 놀고있는 jquery 코드도 표시하십시오. 그것은 더 많은 것을 사용할 수 있도록 할 것입니다. – gotohales

+1

@undefined ''(및 b)는 코드 뒤에 나오는 텍스트를 나타 내기위한 예시 일 뿐이라고 생각합니다. –

답변

3

parentsfilter 방법을 사용할 수 있습니다.

$('span').click(function(){ 
    var matched = $(this).parents().filter(function(){ 
     return $(this).siblings('[siblingmatch]').length; 
    }).first(); 
}); 
siblingmatch 유효한 속성 아니라고

http://jsfiddle.net/WW5qL/

참고, 대신 속성 data-* HTML5를 사용할 수 있습니다.

+0

예, siblingmatch는 실제 속성 이름이 아니며이 예제의 일부입니다. 나는 당신의 예를 돌렸고 그것이 내가 원하는 것을 돌려주는 것처럼 보입니다. 부모 필터 대신 코드에서 closest() 함수를 사용하지 않는 것으로 나타났습니다. 한 대 다른 대 사용하는 이유가 있습니까 및 가까운() 함께 동일한 일을 할 수 있습니까? – bbeaudet

+0

내 자신의 의견에 응답 : closest()는 함수를 지원하지 않으므로 선택기가 필요하다. 이것은 내가 고심하고있는 곳이다. parents(). filter()는 함수를 허용하므로 약간의 유연성을 제공합니다. – bbeaudet

+1

@bbeaudet'closest'는 일치하는 부모 요소 (selector_에 의해 _ 지정됨) 만 반환합니다. 여기서는 유용한 메소드가 아닙니다. vs parents는 선택된 요소의 모든 부모 요소를 반환합니다. function_) 필터링 할 수 있습니다. 두 함수 모두'function'을 허용하지 않습니다.'filter'는 jQuery가 제공하는 연결 가능성입니다. – undefined

관련 문제