0

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

4

6 回答 6

2

this指的是窗口,全局范围,而不是 HtmlElement。

试试这个:

jQuery(jQuery("ul.nav.menu > li:last-child")).attr('class');

另请注意,jQuery("ul.nav.menu > li").is(':last-child')只要您li在导航菜单中有一个,这将始终返回 true。

于 2013-04-17T12:19:49.363 回答
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.

于 2013-04-17T12:21:36.850 回答
1
var lastChild = jQuery("ul.nav.menu > li:last-child");

if (lastChild != null)
{
    var classes = lastChild.attr('class');
    alert(classes);
}
于 2013-04-17T12:22:37.137 回答
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/

于 2013-04-17T12:20:11.803 回答
0

因为 this 指向窗口对象或其他一些元素。if 语句不会像回调那样神奇地改变 this 的范围each()。只需创建一个抓取最后一个元素的选择器,然后读取它的类。

var lastElem = jQuery("ul.nav.menu > li:last-child");
var classes = lastElem.attr('class');
console.log(classes);
于 2013-04-17T12:21:08.990 回答
0
var classes = $("ul.nav.menu > li ").filter(":last-child").attr('class');
alert(classes);

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

于 2013-04-17T12:22:28.663 回答