0

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

});
4

1 回答 1

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');

});   
于 2013-09-06T12:42:38.703 回答