使用jQuery只查找第一个类
Find only first class with jQuery
在下面的标记中,我只想找到类为.hide
的第一个元素,并通过单击.add a
来更改其类。
但是我找不到班级。
<div class="field">default</div>
<div class="field hide">find this 1</div>
<div class="field hide">and then this 2</div>
<div class="field hide">and then this 3 </div>
<div class="field hide">and then this 4</div>
<div class="field add"><a>Add more</a></div>
以下是我正在尝试的:
$('.add a').click(function(e) {
e.preventDefault();
$(this).parent().siblings().find(".hide").removeClass("hide").addClass("show");
});
JSFiddle:http://jsfiddle.net/ok38wrnt/
使用索引为0的:eq
选择器仅针对第一个元素:
$(this).parent().siblings(".hide:eq(0)")
工作演示
find
在siblings()
下是错误的,因为兄弟项是您想要的项。
使用filter
代替:
然后,您可以将:first
添加到.hide
中以获得第一个匹配。
JSFiddle:http://jsfiddle.net/TrueBlueAussie/ok38wrnt/2/
$('.add a').click(function (e) {
e.preventDefault();
$(this).parent().siblings().filter(".hide:first").removeClass("hide").addClass("show");
});
缩短为:
http://jsfiddle.net/TrueBlueAussie/ok38wrnt/5/
$(this).parent().siblings(".hide:first").removeClass("hide").addClass("show");
您可能会使用toggleClass
,假设您永远不会丢失这两个类(或者您最终会同时设置这两个)。
.hide
元素是a
元素的父元素的兄弟元素,因此应该将siblings()
与选择器一起使用。您还需要使用:first
来匹配第一个找到的元素。试试这个:
$('.add a').click(function(e) {
e.preventDefault();
$(this).parent().siblings('.hide:first').toggleClass("hide show");
});
更新的fiddle
first()
方法。
$('.add a').click(function(e) {
e.preventDefault();
$('.hide').first().removeClass("hide").addClass("show");
});
Fiddle
相关文章:
- 如何使用Javascript在HTML表中查找第一个空行
- 如何在dom中只查找第一个条目
- 查找表单输入的第一个单词
- 正在查找数组中第一个匹配元素的索引
- 循环通过表格查找第一个具有 CSS CSSstablelisttdselect 的 TD 文本
- 如何在jquery中查找第一个父元素
- 查找第一个可滚动的父项
- JS regex.exec() 返回第一个查找
- 正则表达式在 JS 文件中查找第一个注释
- jQuery 在元素之前查找第一个属性
- jQuery选择器,用于查找与选择器匹配的给定元素之后的第一个元素
- 只查找嵌套数组中的第一个数字
- 在索引之后查找字符串的第一个索引
- 查找选择器的第一个父级
- 使用 jQuery 查找第一个祖先是具有特定类的对象的子级
- 查找数字序列中第一个缺失的数字
- ECMA5 数组方法 - 查找数组中某个类型的第一个对象
- 使用jquery在dom的其余部分中查找特定元素之后的第一个匹配项
- 查找一行中第一个和最后一个引号之间的文本
- Javascript/Jquery:在嵌套数组中查找具有键值对的第一个和最后一个数组的索引的最有效方法