Как мне выбрать элементы ссылки только для родителя <ul>
из такого списка?
<ul>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a>
<ul>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
</ul>
</li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
Так что в css ul li a
, но неul li ul li a
Благодарность
jquery
html
css
css-selectors
Астон
источник
источник
ul.find(">li");
если у вас есть узел "ul" как объект JQuery в переменной ul.Когда у вас есть начальная ul, вы можете использовать метод children () , который будет рассматривать только непосредственных дочерних элементов элемента. Как указывает @activa, один из способов легко выбрать корневой элемент - присвоить ему класс или идентификатор. Ниже предполагается, что у вас есть root ul с id
root
.$('ul#root').children('li');
источник
$('ul').first().children('li')
Также может быть использованКак указано в других ответах, самый простой метод - однозначно идентифицировать корневой элемент (по идентификатору или имени класса) и использовать прямой селектор потомков.
$('ul.topMenu > li > a')
Однако я столкнулся с этим вопросом в поисках решения, которое работало бы с безымянными элементами на разной глубине. DOM.
Этого можно достичь, проверив каждый элемент и убедившись, что у него нет родителя в списке совпадающих элементов. Вот мое решение , заключенное в селектор jQuery 'topmost'.
jQuery.extend(jQuery.expr[':'], { topmost: function (e, index, match, array) { for (var i = 0; i < array.length; i++) { if (array[i] !== false && $(e).parents().index(array[i]) >= 0) { return false; } } return true; } });
Используя это, решение исходного сообщения:
$('ul:topmost > li > a') // Or, more simply: $('li:topmost > a')
Полный jsFiddle доступен здесь .
источник
:topmost
- попробуйте использовать.parentElement.closest(selector)
. Как всегда, IE + Edge - единственные, кто не поддерживает его> :-( так что вот полифилл pastebin.com/JNBk77VmПросто вы можете использовать это ..
$("ul li a").click(function() { $(this).parent().find(">ul")...Something; }
См. Пример: https://codepen.io/gmkhussain/pen/XzjgRE
источник
Возможно, вы захотите попробовать это, если результаты все еще передаются дочерним элементам, во многих случаях JQuery по-прежнему будет применяться к детям.
$("ul.rootlist > li > a")
Используя этот метод: E> F Соответствует любому элементу F, который является дочерним элементом элемента E.
Указывает JQuery искать только явные дочерние элементы. http://www.w3.org/TR/CSS2/selector.html
источник
Вы также можете использовать
$("ul li:first-child")
только для получения прямых потомков UL.Я согласен, вам нужен идентификатор или что-то еще, чтобы идентифицировать основной UL, иначе он просто выберет их все. Если бы у вас был div с идентификатором около UL, проще всего было бы
$("#someDiv > ul > li")
источник
:first-child
. Это выберет «первымli
из каждогоul
». В исходном посте просили «каждыйli
с первогоul
».Попробуй это:
$("#myId > UL > LI")
источник
У меня были проблемы с вложенными классами на любой глубине, поэтому я понял это. Он выберет только первый встреченный уровень содержащего объекта JQuery:
var $elementsAll = $("#container").find(".fooClass");4 var $levelOneElements = $elementsAll.not($elementsAll.children().find($elementsAll)); $levelOneElements.css({"color":"red"})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> <div class="fooClass" style="color:black"> Container <div id="container"> <div class="fooClass" style="color:black"> Level One <div> <div class="fooClass" style="color:black"> Level Two </div> </div> </div> <div class="fooClass" style="color:black"> Level One <div> <div class="fooClass" style="color:black"> Level Two </div> </div> </div> </div> </div>
источник
1
$("ul.rootlist > target-element") 2 $("ul.rootlist").find(target-element).eq(0) (only one instance) 3 $("ul.rootlist").children(target-element)
вероятно есть много других способов
источник
.add_to_cart >>> .form-item:eq(1)
второй .form-item на уровне дерева потомок от .add_to_cart
источник