Jquery removeClass工作不正常

Jquery removeClass工作不正常,jquery,Jquery,我正在设计一个javascript函数来突出显示可滚动列表中的标签并滚动到它;突出显示和滚动是可以的 问题是,我也不想“取消突出显示”以前突出显示的标签(如果有)(用于将来的搜索)。要突出显示我添加了一个css类,要取消突出显示我使用jQuery中的removeClass删除css类(如果存在);但出于某种原因,它不起作用。这是我的职责: $('.targetUserName').each(function () { index++; s = this.inn

我正在设计一个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

});

我只是有一个bug:我将所有这些标签都归于一个类(targetUserName)来使用jQuery识别它们,当我突出显示标签时,jQuery被删除,因为我使用了 .attr('class','current')来设置正在擦除旧类的类。这导致each()函数中没有考虑这些项,因此以前添加的“current”类永远不会被删除。我更正了代码,使用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');

});   

检查你的$(this)以确保它是你真正想要的。你怎么知道它不起作用?另外:不需要对
innerHTML
的值调用
.toString()
;它已经是一个字符串了。使用
.addClass()
添加类。使用
var
声明局部变量。这可能重复:如果条件匹配,是否使用
else?它是否输入
else if
部件?尝试添加警报,看看是否有。您可以共享列表的HTML吗。