jQuery 过滤函数 $(this).has()

标签 jquery jquery-selectors

我想这种问题对你们中的一半人来说很容易,但我在这个问题上坚持了几个小时,所以,我将非常感谢您的帮助。这是我一直在努力解决的问题:

我需要选择包含以 .pdf 结尾的 href 属性的所有链接元素。我提出了这个解决方案:

$('a[href$=".pdf"]').filter(function() {
    return $(this).parent().has('ul');
  })
})

但是,似乎 $(this).parent().has('**anytag**') 总是返回 true,无论 "anytag" 是什么是(我已经用 Firebug 检查过了)。 因此,我的代码已损坏,但我无法理解为什么它会出现这种意外的行为。你能指出我的误解是什么吗?

最佳答案

.has()本身就是一个过滤函数。它返回一个新的 jQuery 集,其中的元素具有与选择器匹配的元素作为其后代。由于 jQuery 集是真实的,因此在 .filter() 中返回它们没有任何效果,因为没有任何内容被过滤掉。

您可以将 :has 选择器与子选择器结合使用:

$(':has(ul) > a[href$=".pdf"]');

关于jQuery 过滤函数 $(this).has(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13363895/

相关文章:

jquery - 固定位置模态滚动/焦点

javascript - 简单的 Bootstrap 4 轮播,下一张幻灯片的一部分靠近主轮播元素

javascript - 使用history.js在iframe内的后退按钮

javascript - 为什么选择器末尾和结束引号之间需要有一个空格?

javascript - 在包含克隆 dom 元素的数组上使用 jquery 选择器

javascript - 检查至少一个复选框已选中 jquery Validate

javascript - jquery优雅降级ie5.5

jquery - 在 ul 内的 ul 内选择 li

Jquery .children() -- 父类有唯一类,子类有非唯一类,选择子类

jquery - 如何在 jquery 中的 if 和 else 中进行数学运算?