Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Переход к первому родителю. (https://javascript.ru/forum/jquery/73819-perekhod-k-pervomu-roditelyu.html)

lordenas 18.05.2018 15:49

Переход к первому родителю.
 
Возможно ли, как-то перескочить к самому верхнему родителю, удовлетворяющего условие? Например:
В списке может быть бесконечное вхождение ul в тег li. И нужно попасть именно в первый UL, от места вызова функции.

При чем список динамический

<li>
   <ul Нужно попасть сюда>
         <li>
               <ul>
                      <li>Место вызова функции</li>
                </ul>
         </li>
   </ul>
</li>

<li>
второй блок
</li>

<li>
Третий блок
</li>

рони 18.05.2018 16:45

lordenas,
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css"> .red {
      background-color: #FF0000;

  }
 ul {
     border: 1px solid #0000FF
 }

  </style>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>

  <script>
$(function() {
    $("li").on("click", function() {
    $(this).parents("ul  ul").last().addClass("red")
})
});
  </script>
</head>

<body>
<ul>
    <li>
   <ul> Нужно попасть сюда
         <li>
               <ul>
                      <li>Место вызова функции</li>
                </ul>
         </li>
   </ul>
</li>

<li>
второй блок
</li>

<li>
Третий блок
</li>

</ul>

</body>
</html>

Dilettante_Pro 18.05.2018 16:59

<li>
   <ul id='ul1'>
         <li>
               <ul id='ul2'>
                      <li>Место вызова функции</li>
                </ul>
         </li>
   </ul>
</li>

<li>
второй блок
</li>
<li>
Третий блок
</li>
<div id='res'></div>
<script>
var parent, last = '';
[].forEach.call(document.querySelectorAll('li'), function(elem) {
   elem.onclick = function() {
       parent = elem.parentNode;  
       last = parent.nodeName == 'UL'? parent.id : last ;
       res.innerText = last;
   }
});
</script>


Часовой пояс GMT +3, время: 13:56.