我使用$('#ul li').get()
来获取所有列表元素并存储在一个数组中,每个列表元素都有类......
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
}
我怎样才能获得每个列表元素的类...谢谢!
答案 0 :(得分:5)
您可以使用jQuery自己的map
来执行此操作:
alert($('#ul li').map(function() {
return this.className;
}).get());
例如,。你可以对返回的数组做任何事情。
您执行此操作的方式不起作用的原因是您在本机DOM元素上调用不存在的方法.attr
- 它不是扩展的jQuery对象。
答案 1 :(得分: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
}
答案 2 :(得分:1)
get()
方法返回DOM元素的本机数组,而不是jQuery对象。
你应该使用jQuery:
var lists = $('ul li');
var className = lists.eq(i).attr('class');
var content = lists.eq(i).text();
答案 3 :(得分:1)
如果你想循环遍历所有元素
$('ul li').each(function(){
var className = $(this).attr('class');
var content = $(this).text();
});
答案 4 :(得分: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就是上述例子。
祝你好运!