最后一个元素类名称不在jQuery中输出

时间:2013-04-17 12:16:36

标签: javascript jquery

我的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

当前输出 - 未定义

让我知道我做错了什么:(

小提琴 - http://jsfiddle.net/mPHLz/7/

6 个答案:

答案 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);
        }
});

http://jsfiddle.net/mPHLz/8/

答案 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);

http://jsfiddle.net/mPHLz/12/