我使用li
列出了.toArray()
个元素。我现在需要循环遍历它们以找到所需的元素并更改其样式Class。
我不确定我做错了什么,但我似乎无法获得索引项的类,但我可以检索innerHTML
没问题。
var viewsIndex = $('#viewsList li').toArray()
for(i=0; i < viewsIndex.length; i++) {
if(viewsIndex[i].innerHTML == selectedTab) {
console.log(viewsIndex[i].attr('style')); //This does NOT work
console.log(viewsIndex[i].innerHTML); //This does work
}
else
{
}
}
我定位元素后,我想使用.removeClass
和.addClass
来更改样式。
答案 0 :(得分:5)
这是没有jQuery函数的DOM对象:
viewsIndex[i]
这是具有attr
函数的jQuery对象:
$(viewsIndex[i]).attr('style')
无论如何,你的代码可以简单得多:
$('#viewsList li').filter(function(){
return this.innerHTML == selectedTab;
}).removeClass('foo').addClass('bar');
答案 1 :(得分:4)
您正试图在DOM
对象上调用jQuery函数,首先将其转换为jQuery
对象。
更改
viewsIndex[i].attr('style')
要
$(viewsIndex[i]).attr('style')
答案 2 :(得分:1)
你不能使用.each()
吗?
$('#viewLists li').each(function(i){
if($(this).html == selectedTab){
$(this).removeClass('foo').addClass('bar');
}
});
答案 3 :(得分:0)
使用jQuery each
循环遍历元素,然后将其作为$(this)
访问。这样你就可以访问每个项目的jQuery方法。
$('#viewsList li').each(function(){
var element = $(this);
if(element.html() == selectedTab){
console.log(element.attr('style')
} else {
}
}