【问题标题】:JQuery selectors -- why does adding a filter return MORE elements?JQuery 选择器——为什么添加过滤器会返回更多元素?
【发布时间】:2014-12-04 20:53:39
【问题描述】:

我知道有很多关于 JQuery 选择器的问题,但我没有看到我的具体问题。

如果我使用这个选择器,它会找到 2 个元素,都是“dluSingle”类。一个的 id 为“F45_rdefault_F48”,一个的 id 为“F45_r0_F48”。

linkGridDiv.find('.dluSingle')

所以,我认为这段代码只会返回 id 为“F45_r0_F48”的元素。

linkGridDiv.find('.dluSingle [id *= "r0"]')

相反,它返回 5 个元素,所有元素的 id 中都包含“r0”,但没有一个属于“dluSingle”类类型。

如果它什么也没找到,对我来说会更有意义。为什么添加额外的过滤器会返回更多结果而不是更少?我不明白什么?感谢您的帮助!

【问题讨论】:

    标签: jquery jquery-selectors


    【解决方案1】:

    通过在您的类和“过滤器”之间包含一个空格,jQuery 将您的过滤器视为后代选择器。

    换句话说,它会查找低于您的 dluSingle 类的任何子、孙子等元素。要查找 id 中具有“dluSingle”和“r0”类的元素,您可以简单地执行以下操作:

    linkGridDiv.find('.dluSingle[id *= "r0"]')

    为了完整性,

    linkGridDiv.find('.dluSingle [id *= "r0"]')

    在 id 中查找任何具有“r0”的元素,该元素是具有“.dluSingle”类的元素的后代,并且

    linkGridDiv.find('.dluSingle > [id *= "r0"]')

    查找 id 中具有“r0”的任何元素,该元素是具有“.dluSingle”类的元素的

    【讨论】:

    • 哦,现在说得通了!我不明白为什么空间有什么不同,但现在我明白了。非常感谢您的解释!
    【解决方案2】:

    试试看,类选择和属性选择之间没有空格。

    linkGridDiv.find('.dluSingle[id *= "r0"]')
    

    【讨论】:

    • 哇,我不敢相信这就是答案……真是个愚蠢的小东西,但这真的让我发疯了……非常感谢!
    猜你喜欢
    • 2017-11-29
    • 2012-03-29
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多