我正在设计一个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
});
答案 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');
});