我正在寻找一种将类添加到具有另一个类的特定元素的方法。

<ul>
  <li>Item 1</li>
  <li>Item 2</li>
  <li>Item 3</li>
  <li class="hide">Item 4</li>
  <li class="hide">Item 5</li>
<ul>


JS / jQuery

if($('li').hasClass('hide')) {
  $('li').removeClass('hide').addClass('slide-down');
}


问题是类slide-down被添加到所有li元素中。

有没有一种方法只能定位已删除li类的hide元素?

最佳答案

嗯,也许是由于HTML中的拼写错误:class"hide"(您缺少等号)。

另外,您的代码中存在逻辑错误:


if($('li').hasClass('hide'))如果文档中的任何<li>元素具有hide类,则条件将为true。
$('li').removeClass('hide').addClass('slide-down');第一部分$('li')实际上将选择文档中的所有<li>元素,并从中删除类hide并将slide-down添加到文档中的所有<li>元素。


这是我的处理方式:

$('li.hide').removeClass('hide').addClass('slide-down');


注意jQuery是关于链接的,即选择子集并将函数应用于这些子集。

该行的作用是:


$('li.hide')选择文档中所有具有<li>类的hide元素-现在成为您的“工作子集”。
.removeClass('hide')从第一步中获得的此子集中删除hide类,然后再次返回相同的子集。
.addClass('slide-down')slide-down类添加到步骤2返回的所选子集中的所有<li>中,该子集中与步骤1相同。


JS小提琴:https://jsfiddle.net/q0nzaa7t/

10-05 20:51
查看更多