javascript - 使用 jQuery 过滤元素

标签 javascript jquery html filter traversal

我有以下 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());

我的问题是:

  1. 如何使用 jQuery 获取最后一个元素?
  2. 是否可以使用过滤功能?如果不能,为什么?
  3. 为什么我得到 undefined?

最佳答案

  1. 如何使用 jQuery 获取最后一个元素?

    You can use :last selector or last() method on the jQuery collection

  2. 是否可以使用过滤器功能,如果不能,为什么?

    You can use filter() as follow. However, in this case, you don't need filter.

    $(this).closest('li').children().filter('.dummyText')
    
  3. 为什么我得到 undefined?

    $(this).closest('li').filter('.dutyText') will search for the closest ancestor <li> and will try to get the li having dummyText class from it. As the closest li don't have class dummyText, the selector will not select any element and so calling html() on empty object returns undefined.

假设只有一个元素的类是dummyText

  1. 因为该元素是 img 的兄弟元素, 你可以使用 siblings() .

    $(this).siblings('.dutyText')
    
  2. 你也可以使用父子层次结构

    $(this).closest('li').find('.dutyText')
    

具有 dummyText 的多个元素类

  1. 您可以使用 :last 选择器获取最后一个元素。

    $(this).closest('li').find('.dutyText:last')
    
  2. 您可以使用 last() 方法

    $(this).closest('li').find('.dutyText').last()
    

关于javascript - 使用 jQuery 过滤元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34944867/

相关文章:

html - IE7 的 CSS 宽度 : inline-block not working even after hacks

html - 响应式 View 网站检查

javascript - 如何让我的按钮导航到不同的页面?

javascript - 使用jquery调用Servlet

jquery - 在 jQuery 函数中动态调整 CSS 值时遇到问题

javascript - 获取用于加载 ajax 内容的相同函数适用于 ajax 内容

html - 如何在html中制作带圆圈的线条边框?

javascript - 如何制作Javascript/HTML,停止并等待用户输入

javascript - 如何让Vue Material 选择框在默认值为空时显示选项?

javascript - 如何缩小 json 响应?