2013-09-06 2 views
0

Я разрабатываю функцию javascript, чтобы выделить ярлык в прокручиваемом списке и прокручивать его; подсветка и прокрутка в порядке.Jquery removeClass не работает должным образом

Проблема заключается в том, что я также хочу «де-подсветить» ранее выпущенные ярлыки, если они есть (для будущих поисков). Чтобы подчеркнуть, я добавляю класс css, чтобы отключить выделение, я использую removeClass из jQuery, чтобы удалить класс 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

Проверьте свои $ (это), чтобы убедиться, что это вы действительно ищете. – zmanc

+2

Откуда вы знаете, что это не работает? Также: нет необходимости вызывать '.toString()' значение 'innerHTML'; это всегда строка. Используйте '.addClass()' для добавления класса. Объявить локальные переменные с помощью 'var'. – Pointy

+0

Возможный дубликат: http://stackoverflow.com/questions/2482753/removeclass-jquery-statement-not-working – hima

ответ

0

Я просто была ошибка: я приписывал все эти ярлыки класса (targetUserName), чтобы идентифицировать их с помощью JQuery, который стирается, когда я был подсветка этикетки, потому что я использовал .attr ('class', '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'); 

}); 
Смежные вопросы