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

时间:2012-11-13 15:46:36

标签: jquery jquery-selectors

我想这一问题很容易让你们中的一半在那里,但我已经坚持了几个小时,所以,我非常感谢你的帮助。以下是我一直在努力的方法:

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

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

然而,无论$(this).parent().has('**anytag**')是什么(我用firebug检查过),似乎"anytag"总是返回true。 所以,我的代码被破坏但我无法理解为什么它有这种意外的行为。你能指出我在这里的误解是什么吗?

1 个答案:

答案 0 :(得分:3)

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

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

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