Jquery removeClass无法正常工作

时间:2013-09-06 12:18:57

标签: jquery

我正在设计一个javascript函数来突出显示可滚动列表中的标签并滚动到它;突出显示和滚动就可以了。

问题是如果有任何(未来的搜索),我也想要“去除突出显示”以前高亮的标签。为了突出显示我添加了一个css类,要取消突出显示我使用jQuery中的removeClass删除css类(如果存在);但由于某种原因,它不起作用。这是我的功能:

$('.targetUserName').each(function () {
    index++;          
    s = this.innerHTML.toString().toLowerCase().match(regex);
    if(s != null) {
        $(this).attr('class', 'current');
        foundUsers++;

        if (foundUsers == 1 && index > 10)
            $('#usersDiv').scrollTop(index * height);

    }
    else if ($(this).hasClass('current'))
        $(this).removeClass('current'); //this is not working

});

1 个答案:

答案 0 :(得分:0)

我只是有一个错误:我将所有这些标签归结为一个类(targetUserName)来使用jQuery来识别它们,当我突出标签时它被删除了,因为我使用了 .attr('class','current')设置类,它正在擦除旧类。这导致在each()函数中不考虑这些项目,因此之前添加的“当前”类永远不会被删除。我更正了代码以使用addClass()而不是attr('class'),现在它可以正常工作。

 $('.targetUserName').each(function () {
    index++;
    s = this.innerHTML.toLowerCase().match(regex);
    if (s != null) {
        //$(this).attr('class', 'current') // this was the mistake
        $(this).addClass('current'); //correct
        foundUsers++;
        if (foundUsers == 1 && index > 10)
            $('#usersDiv').scrollTop(index * height);

    }
    else if ($(this).hasClass('current'))
        $(this).removeClass('current');

});