我想这种问题对你们中的一半人来说很容易,但我在这个问题上坚持了几个小时,所以,我将非常感谢您的帮助。这是我一直在努力解决的问题:
我需要选择包含以 .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/