我正在寻找一种将类添加到具有另一个类的特定元素的方法。
<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/