2013-12-13 2 views

답변

3

이 당신이 원하는 것을 얻을 수있는 가장 좋은 방법입니다 :

var $t = $(this), $p = $t.parentsUntil('[id]') 
$p = $t.add($t.closest('*[id]').add($p));  

지금 $p 요소의 위쪽 흔적이 매핑에 가입 할 수있다 등 여기

수정 된 바이올린 http://jsfiddle.net/Exceeder/awnvowan/

에게 있습니다

바이올린에도 몇 가지 문제가있었습니다. 내가 정확하게 당신이 필요로하는 것을 이해한다면, 매퍼에 직접 문자열 건물을 처리하는 것이 가장 효율적입니다 :이 답변이 jfaron 코멘트를 기반으로 업데이트되었습니다

var selector = 
    $p.map(function() { 
     var $t = $(this), 
      id = $t.attr('id'), 
      tag = $t.prop("tagName"), 
      cls = $t.attr("class"); 
     if (cls) { 
      cls = "." + $.trim(cls).replace(/\s/gi, "."); 
     } else 
      cls = ''; 

     return tag + (id ? '#'+id : '') + cls; 
    }).get().reverse().join(" "); 

업데이트.

+0

이것은 작동합니다! 내가 필요로하는 또 다른 유일한 일은 div로 ID를 포함하는 것입니다 (이 메소드는 ID가 아닌 태그 만 반환 함). 그래서 지금 그걸 실험하고 있습니다. 그렇게하는 법을 알고 있다면 그것은 매우 도움이 될 것입니다. :) –

+0

실수로 아이디가있는 부모를 포함하려면 'closest'를 사용해야합니다. 내 대답을 업데이트하여 코드를 조금 개선했습니다. –

+0

클릭 한 요소가 포함되어 있지 않은 것처럼 보입니다.하지만이 정보를 파악하기에 충분합니다. 고마워요! –

0

:

<div id="id-found"> 
    <ul> 
     <li></li> 
    </ul> 
</div> 

여기에 예를 들어 JS 바이올린 (즉,이 예보다 약간 더 고급의)입니다. 이것이 HTML의 기본 규칙입니다. 요소의 조상에 고유 ID가 있으면 .closest()를 사용하여 원하는 ID를 선택할 수 있습니다.

관련 문제