2014-12-04 55 views
0

我知道有很多关于JQuery选择器的问题,但我没有看到我的特殊问题。JQuery选择器 - 为什么添加过滤器会返回更多元素?

如果我使用这个选择器,它会找到2个元素,都是类“dluSingle”。一个人的“F45_rdefault_F48” 的ID和一个有‘F45_r0_F48’的ID。

linkGridDiv.find('.dluSingle') 

所以,我想,这个代码将使用的ID只返回元素‘F45_r0_F48。’

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

相反,它返回5个元素,所有在id中包含“r0”,但它们都不是类型“dluSingle”。过滤器返回更多结果而不是更少?我不理解什么?感谢您的帮助!

回答

1

尝试一下,类选择和属性选择之间没有空格。

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

哇,我简直不敢相信那是一个愚蠢的小东西,但这真的让我发疯了......非常感谢你! – Ellen 2014-12-04 21:35:11

2

通过包括类和你的“过滤器”之间的空间,jQuery的对待你的过滤器后代选择。

换句话说,它寻找以下的任何孩子,大孩子等元素你的dluSingle类。为了寻找在ID与类 “dluSingle” 和 “R0” 的元素,你可以简单地做:

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

为了完整起见,

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

查找与“任何元素R0" 中,其与类的元素的后代 id为“.dluSingle”,和

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

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

+0

哦,现在有道理!我不明白为什么这个空间会有所作为,但现在我明白了原因。非常感谢您的解释! – Ellen 2014-12-04 21:59:07

相关问题