У меня странная структура, и я хочу отключить первый элемент внутри li.expanded с помощью a[href = "/abc"]. У меня родитель и ребенок имеют одинаковый href, а заголовок отличается. Как выбрать только родительский элемент?
Вот код:
<ul class = "n-right m-menu__link-list" id = "main-right-menu">
<li class = "first leaf"><a href = "/xyz" title = "xyz-parent">xyz-parent</a></li>
<li class = "leaf"><a href = "/pqr" title = "pqr">pqr</a></li>
<li class = "last expanded"><a href = "/abc" title = "abc">abc</a> //want to find this element and apply treatment
<ul class = "n-right m-menu__link-list" id = "main-right-menu">
<li class = "first leaf"><a href = "/abc" title = "abc1">abc</a></li> //not this one
<li class = "last leaf"><a href = "/mno" title = "mno">mno</a></li>
</ul>
</li>
</ul>
Что пробовал, функция работает. он выбирает как родительский, так и дочерний a[href = "/abc"]. Я хочу найти и выбрать только родительский.
openabcInNav: function() {
var navEl = $('#main-menu, #main-right-menu li.expanded').find('a[href = "/abc"]:nth-child(1)');
navEl.addClass('doNotClose');
navEl.on('click mouseover', function(event) {
event.preventDefault();
$('nav.global-nav').find('li.expanded').toggleClass('show');
});
},



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы можете использовать селектор :first, который вернет первое вхождение, которое является родителем:
$('ul>li.expanded>a[href = "/abc"]:first')
$('ul>li.expanded>a[href = "/abc"]:first').css('background-color', 'green');<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul class = "n-right m-menu__link-list" id = "main-right-menu">
<li class = "first leaf"><a href = "/xyz" title = "xyz-parent">xyz-parent</a></li>
<li class = "leaf"><a href = "/pqr" title = "pqr">pqr</a></li>
<li class = "last expanded"><a href = "/abc" title = "abc">abc</a> //want to find this element and apply treatment
<ul class = "n-right m-menu__link-list" id = "main-right-menu">
<li class = "first leaf"><a href = "/abc" title = "abc1">abc</a></li> //not this one
<li class = "last leaf"><a href = "/mno" title = "mno">mno</a></li>
</ul>
</li>
</ul>a[href = "/abc"]:nth-child(1) смотрит на первый дочерний объект внутри a[href = "/abc"]
Попробуйте использовать:
a[href = "/abc"]:nth-of-type(1)
Это вернет первое, что соответствует a[href = "/abc"]