2011-12-06 85 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