2012-11-13 45 views
1

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

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

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

然而,这似乎$(this).parent().has('**anytag**')总是返回true不管是什么"anytag"是(我用萤火虫检查这一点)。 所以,我的代码被破坏,但我不明白为什么它有这种意外的行为。你能指出我在这里有什么误解吗?

+0

我们需要看到一些HTML样本,以帮助 –

+1

尝试'返回$(本).parent()已经(”。 ul')。length> 0' – Kyle

回答

3

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

你也可以使用该:has选择与孩子选择组合:

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