1

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

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

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

$(this).parent().has('**anytag**')但是,无论是什么,它似乎总是返回 true "anytag"(我已经用 firebug 进行了检查)。所以,我的代码坏了,但我不明白为什么它会出现这种意外行为。你能指出我在这里的误解是什么吗?

4

1 回答 1

3

.has()本身就是一个过滤函数。它返回一个新的 jQuery 集合,其中包含与选择器匹配的元素作为其后代的元素。由于 jQuery 集是 thruthy,返回它们.filter()没有任何效果,因为没有任何东西被过滤掉。

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

$(':has(ul) > a[href$=".pdf"]');
于 2012-11-13T15:49:13.210 回答