Как проверить, выбран ли какой-либо из li или нет?

#javascript #jquery

#javascript #jquery

Вопрос:

 <div id='id'>
 <ul id='ul'>
  <li id='1' class="">a</li>
  <li id='2' class="">a</li>
  <li id='3' class="">a</li>
  <li id='4' class="select">a</li>
  <li id='5' class="">a</li>
 </ul>
</div>
  

Как мне узнать, есть ли у какого-либо из <li> элементов select класс? Если найден, как мне удалить этот класс?

Ответ №1:

Следующее удалит select класс из всех <li> элементов, в которых он есть:

 $('li.select').each(function() { $(this).removeClass('select'); });
  

Комментарии:

1. вырвал слова из моих рук

2. Если у меня есть тег привязки вместо li, то $(‘a.select’).each(function() { $(this).removeClass(‘select’); }); должен работать?

3. Кстати, жакилин, я заметил, что это твой первый вопрос здесь, обязательно поставь галочку рядом с ответом, который наилучшим образом отвечает на твой вопрос, чтобы принять его.

Ответ №2:

Чтобы определить, выбран ли какой-либо li, используйте

 $('#ul > .select');
  

и используйте removeClass для удаления select

 .removeClass('select');
  

Ответ №3:

используйте

removeClass

   $('#ul li').removeClass("select");
  

чтобы найти этот класс, существует?
используйте

hasClass

Ответ №4:

Я бы сделал это следующим образом:

 $("#ul > li").filter(function(index) { return $(this).hasClass("select"); }).removeClass("select");
  

Редактировать:

Интересный тестовый пример для jsperf, показывающий, что действительно, filter — самый медленный метод, в то время как метод selector — самый быстрый.

Комментарии:

1. я бы подумал, что в этом слишком много соуса / горчицы, хотя, ИМХО

2. Я полагаю, вы правы. Сработал бы простой $("#ul > .select").removeClass("select") способ. Но это забавнее писать! 😉 Хотя определенно не так эффективно. 🙂

3. хотя это выглядит более «хардкорно». просто не фанат, так как я использую jquery для простоты 🙂 приятно видеть другие реализации, хотя они довольно уникальны, чем 3 других ответа, ха-ха

4. @Andrew конечно, я поддержал ваш ответ, поскольку он самый чистый и простой IMO. 🙂

5. Спасибо :) . Кроме того, это не значит, что хардкор — это не весело, как вы говорите, потому что именно так человек учится! Однако на практике выигрывает lex parsimoniae .