我的HTML
<ul class="nav menu">
<li class="item-101 current active"><a href="/mysite/">HOME</a></li>
<li class="item-102"><a href="/mysite/index.php/about-us">ABOUT US</a></li>
<li class="item-103"><a href="/mysite/index.php/products">PRODUCTS</a></li>
<li class="item-104"><a href="/mysite/index.php/contact">CONTACT</a></li>
</ul>
的jQuery -
if( jQuery("ul.nav.menu > li").is(':last-child') ) {
var classes = jQuery(this).attr('class');
alert(classes);
//expected output - item-104
//getting undefined
}
预期输出 - item-104
当前输出 - 未定义
让我知道我做错了什么:(
答案 0 :(得分:2)
this
指的是窗口,全局范围,而不是HtmlElement。
试试这个:
jQuery(jQuery("ul.nav.menu > li:last-child")).attr('class');
另请注意,只要您在导航菜单中有jQuery("ul.nav.menu > li").is(':last-child')
,此li
将始终返回true。
答案 1 :(得分:1)
试试这个:
if (jQuery("ul.nav.menu > li").is(':last-child')) {
var classes = jQuery("ul.nav.menu > li:last").attr('class');
alert(classes);
}
this
指的是当前范围内的元素而不是last-child li
。
答案 2 :(得分:1)
var lastChild = jQuery("ul.nav.menu > li:last-child");
if (lastChild != null)
{
var classes = lastChild.attr('class');
alert(classes);
}
答案 3 :(得分:0)
jQuery("ul.nav.menu li").each(function() {
if( jQuery(this).is(':last-child') ) {
var classes = jQuery(this).attr('class');
alert(classes);
}
});
答案 4 :(得分:0)
因为它指向窗口对象或其他一些元素。 if语句不会像each()
中的回调一样神奇地改变它的范围。只需创建一个选择器来抓取最后一个元素,然后再读取它的类。
var lastElem = jQuery("ul.nav.menu > li:last-child");
var classes = lastElem.attr('class');
console.log(classes);
答案 5 :(得分:0)
var classes = $("ul.nav.menu > li ").filter(":last-child").attr('class');
alert(classes);