2015-04-30 10 views
2

У меня есть этот HTML кода пример:Получить все родитель Информацию До Указанной Родитель

<html> 
    <body> 
     <div> 
      <div id="stophere"> 
       <h4 class="parentclass"> 
       <span class="target">Clicked</span> 
       </h4> 
      </div> 
     </div> 
    </body> 
</html> 

Из примера HTML коды выше, я хочу, чтобы получить имя тега всех родителей класса target (при получении события щелчка) вниз от div с id stophere.

Я попробовал этот код:

$(ev.target).parents() 
      .map(function() { 
      return this.tagName; 
      }) 
      .get() 
      .join(", "); 

Но она включает в себя имена тегов всех родителей выше stophere. Хотя я хочу получить только 1 div и 1 h4.

Каков правильный способ собрать всех родителей target от stophere?

ответ

4

Вы можете использовать метод parentsUntil для этого

$(ev.target).parentsUntil($('#stophere').parent()) 

Обратите внимание, что это не включено, поэтому мы переходим родительский #stophere включить этот элемент, а

FIDDLE

+0

Не знаю, почему он не работает в моем случае, используя карты и обработчика событий. но хорошо работает в js скрипке http://jsfiddle.net/32g5uhrm/1/ – KeepMove

0

Я не «Я утверждаю, что это хорошее решение, но может быть использовано, если решение adeneo не удалось в вашей ситуации, как в моем случае.

Этот код проверки является ли предел перемещения является содержащий эту ограничительную линию себя или нет, используя find() метод:

jQuery('html').on("click", function (ev) { 
     var elemparentid = jQuery(ev.target).closest("[id]").attr("id"); 
     var thisparents = jQuery(ev.target).parents() 
      .map(function() { 
// check if traversing limit is a children of current element or not, by using find() method 
      if (jQuery(this).find("#" + elemparentid).length < 1) { 
       return this.tagName; 
      } 
     }).get() 
      .join(", "); 
     alert(thisparents); 
    }); 

FIDDLE