1

我有一个li我使用的元素列表.toArray()。我现在需要遍历它们以找到所需的元素并更改其样式类。

我不确定我做错了什么,但我似乎无法获得索引项的类,但我可以检索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更改样式。

4

4 回答 4

5

这是没有 jQuery 函数的 DOM 对象:

viewsIndex[i]

这是具有以下attr功能的 jQuery 对象:

$(viewsIndex[i]).attr('style')

无论如何,您的代码可能会简单得多:

$('#viewsList li').filter(function(){
    return this.innerHTML == selectedTab;
}).removeClass('foo').addClass('bar');
于 2013-01-19T17:28:33.843 回答
4

您正在尝试在DOM对象上调用 jQuery 函数,首先将其转换为jQuery对象。

改变

viewsIndex[i].attr('style')

$(viewsIndex[i]).attr('style')
于 2013-01-19T17:26:49.930 回答
1

你不能用.each()吗?

$('#viewLists li').each(function(i){
    if($(this).html == selectedTab){
       $(this).removeClass('foo').addClass('bar');
    }
});
于 2013-01-19T17:34:33.217 回答
0

使用 jQuery 循环遍历元素each,然后以$(this). 这样您就可以访问每个项目的 jQuery 方法。

$('#viewsList li').each(function(){

    var element = $(this);

    if(element.html() == selectedTab){
        console.log(element.attr('style')
    } else {

    }
}
于 2013-01-19T17:32:41.900 回答