使用 jQuery 过滤元素
Filtering an element using jQuery
我有以下 li 元素:
<li>
<span><img src="../media/check.svg" class="complete"></span>
<span><img src="../media/modify.svg" class="modify"></span>
<span><img src="../media/delete.png" class="delete"></span>
<span class="dutyText">hello</span>
<li>
当单击图像(check.svg|modify.svg|delete.png)时,我想获取上述列表的最后一个span元素。
不幸的是,使用以下代码,我未定义:
console.log($(this).closest('li').filter('.dutyText').html());
我的问题是:
- 如何使用 jQuery 获取最后一个元素?
- 无论如何可以使用过滤器功能,如果没有,为什么?
- 为什么我被定义不明确?
-
如何使用 jQuery 获取最后一个元素?
您可以在 jQuery 集合上使用
:last
选择器或last()
方法 -
无论如何可以使用过滤器功能,如果没有,为什么?
您可以按如下方式使用
filter()
。但是,在这种情况下,您不需要过滤器。$(this).closest('li').children().filter('.dummyText')
-
为什么我被定义不明确?
$(this).closest('li').filter('.dutyText')
将搜索最接近的祖先<li>
,并尝试从中获取具有dummyText
类li
。由于最接近的li
没有类dummyText
,选择器不会选择任何元素,因此在空对象上调用html()
将返回undefined
。
假设只有一个元素具有类 dummyText
-
由于该元素是
img
的同级元素,因此可以使用siblings()
。$(this).siblings('.dutyText')
-
您还可以使用父子层次结构
$(this).closest('li').find('.dutyText')
具有dummyText
类的多个元素
-
您可以使用
:last
选择器来获取最后一个元素。$(this).closest('li').find('.dutyText:last')
-
您可以使用
last()
方法$(this).closest('li').find('.dutyText').last()
1 : 当您想要集合中的最后一个元素时,请使用 .last()
.
2:filter()
用于过滤 JQuery 元素的集合。在您的情况下,您希望选择一个更深的深度(子级)。所以你需要做find()
.
3:你没有得到定义,因为你试图从带有类.dutyText
的li
获取 HTML。它不存在。
相关文章:
- jQuery只过滤可见元素
- 在 Android WebView 中过滤 DOM 元素,而无需 jQuery
- JSON 填充的表单元素不使用 angularJs 过滤器进行过滤
- Angular:如何根据模型中过滤的元素数量隐藏DOM元素
- 过滤具有2个选择列表的元素
- 使用 lodash 过滤一个数组的元素与另一个数组的元素
- 如何将数组添加到对象中,但为每个数组元素过滤掉除一列之外的所有列
- Knockoutjs 模板:在通过某些属性过滤该数组后,如何将 1 个对象数组用于 2 个 DOM 元素
- Jquery 元素的高级过滤
- AngularJS重复使用表格和行跨度以及元素过滤
- 如何根据 css 属性值过滤 HTML 元素
- jQuery .not() 没有从函数 - Ideas 中过滤元素
- 在页面问题上过滤 HTML 元素
- 强制 ng 重复元素在过滤后重绘
- 使用 jQuery 过滤元素
- 过滤无线电元素
- 去掉js模板,过滤可观察数组的第一个元素
- 在Angular中动态选择元素过滤
- AngularJs如何用其他数组元素过滤ngRepeat
- 使用filter()基于父元素过滤jquery