2013-04-17 62 views
0

輸出我的HTML末元素類名沒有jQuery中

<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 
    } 

預期輸出 - 項目-104

電流輸出 - 不確定

讓我知道我做錯了:(

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

回答

2

this指的窗口,全球範圍內,沒有一個HTMLElement。

試試這個:

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

另外請注意,這jQuery("ul.nav.menu > li").is(':last-child')總是隻要返回true,你必須在導航菜單的li

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/

0

由於此所指向的窗口對象或一些其它元件。 if語句不會像each()中的回調那樣神奇地改變此範圍。只需創建一個選擇器來抓取最後一個元素,然後讀取它的類。

var lastElem = jQuery("ul.nav.menu > li:last-child"); 
var classes = lastElem.attr('class'); 
console.log(classes); 
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

+1

感謝palash :) +1 – Trialcoder

1
var lastChild = jQuery("ul.nav.menu > li:last-child"); 

if (lastChild != null) 
{ 
    var classes = lastChild.attr('class'); 
    alert(classes); 
} 
+0

THX的暗示我處理這個+1另一種方式:) – Trialcoder