2011-12-06 87 views
2

我以前$('#ul li').get()得到所有的列表元素,並存儲在一個數組,每個列表中的元素有類的類...獲取列表元素和使用jQuery

var i; 
var listClass = ('#ul li').get(); 
for(i=0;i<listClass.length;i++){ 
    var theClass = listClass[i].attr("class"); //<--what's the proper function/method/code for this? 
    var content = listClass[i].innerHTML; //<-- works very well 

    //other codes here 
} 

如何可我能拿到每個列表元素的類...謝謝!

+1

作爲一個說明,你不應該真的使用innerHTML - 你正在返回的列表項的內容是什麼?它是文字嗎?一個錨標籤? – rlemon

回答

5

您可以使用jQuery自己map做到這一點:

alert($('#ul li').map(function() { 
    return this.className; 
}).get()); 

http://jsfiddle.net/MhVU7/

例如。你可以用返回的數組做任何事情。

你這樣做的方式不起作用的原因是因爲你在原生DOM元素上調用了不存在的方法.attr - 它不是一個擴展的jQuery對象。

1

get()方法返回一個本地DOM元素數組,而不是一個jQuery對象。

你應該使用jQuery:

var lists = $('ul li'); 

var className = lists.eq(i).attr('class'); 
var content = lists.eq(i).text(); 
1

如果你通過所有元素

$('ul li').each(function(){ 
var className = $(this).attr('class'); 
var content = $(this).text(); 

}); 
+1

$這個參考是什麼?我不認爲你明白這個關鍵字的含義。 – rlemon

+1

嚴重..這個代碼甚至不會工作! '$ this.attr('class');'指什麼都沒有..應該是'$(this).attr('class');'即使attr也沒有達到你期望的效果。我已更正你的答案。 – rlemon

+0

感謝您的糾正。這是我的錯誤... – Babu

2
var lis = document.getElementById("ul").children; 
for (var i = 0, len = lis.length; i < len; i++) { 
    var li = lis[i], 
     className = li.className, 
     value = li.value, 
     text = li.textContent; 

    // code 
} 
+1

+1認識到OP沒有特別要求牛鈴解決方案。然而從它的外觀來看,我認爲你可能會被理解爲實施。然而,它可能是正確的。 – rlemon

0

我評論的代碼,以更好地幫助你瞭解它要循環。

$("#ul li").each(function() { /* you should only be using # selector to identify id's - if it's all ul's you want just put ul. */ 
    var klass = this.className; /* this refers to the native DOM object, which contains className */ 
    var textContents = this.innerText || this.textContent; /* the text of the list, does not include html tags */ 
    var childNodes = this.childNodes; /* the child nodes of the list, each unencased string of text will be converted into a TextNode */ 
    console.log(klass + ' ' + textContents); /* replace console.log with alert if you do not have a console */ 
    console.log(childNodes); 
}); 

here是上述的一個例子。

祝你好運!

+0

...爲什麼使用jQuery選擇器,但是然後執行'innerText || textContent' – Raynos

+0

我喜歡混合東西 - 再加上如果我們要把牛仔愛好者的社區轉移到純素香草的生活方式上,我們必須慢慢做。在你走路之前爬行。 – rlemon

+0

我主要是爲了不使用'$(this).text()'和'document.getElementByiD(「ul」)。childNodes' – Raynos