我希望在菜单中的最后一个元素(动态)上获得最高位置。
我希望menu-item-90
代替menu-item-360
问题是我在某些父项目中有孩子。我所尝试的并不适合我。
以下是我的尝试:
var nmobile = $('#nav-mobile ul li:last-of-type:not(.menu-item-has-children)').position().top;
<nav id="nav-mobile">
<div class="menu-container">
<ul id="menu" class="menu expanded" style="display: block;">
<li id="menu-item-102" class="menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-4 current_page_item menu-item-102"><a href="/">Home</a></li>
<li id="menu-item-309" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-309"><a href="/services/">Services</a>
<ul class="sub-menu expanded" style="display: block;">
<li id="menu-item-302" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-302"><a href="/accent-modification/">Accent Modification</a></li>
<li id="menu-item-360" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-360"><a href="/voice/">Therapy</a></li>
</ul>
</li>
<li id="menu-item-160" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-160"><a href="/about-me/">About Me</a></li>
<li id="menu-item-405" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-405"><a href="/onlinetraining/">Training</a></li>
<li id="menu-item-210" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-210"><a href="/testimonials/">Testimonials</a></li>
<li id="menu-item-90" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-90"><a href="/contact-me/">Contact Me</a></li>
</ul>
</div>
</nav>
答案 0 :(得分:0)
一个选项是首先找到最后一个li
元素。然后循环,如果它有孩子,直到你找到一个没有类menu-item-has-children
的孩子:
var nmobile = $('#nav-mobile ul li:last')
while(nmobile.hasClass('menu-item-has-children')) {
nmobile = nmobile.last('ul li');
}
alert(nmobile.position().top);
答案 1 :(得分:0)
使用子选择器(>
)在ul
及其直接子项之间进行锚定:
$('#menu > li:last').position().top
JSFiddle说明了选择:https://jsfiddle.net/kitsunde/6yyffweb/