使用jquery从数组更改目标元素的类

时间:2013-01-19 17:25:37

标签: javascript jquery arrays attr

我使用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来更改样式。

4 个答案:

答案 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 {

    }
}