为什么jQuery在这里返回相同的元素两次?
多次检查HTML,只有一个< div> id =“3”,class =“password_field_real”.
这是获取class =“password_field_real”的所有元素的结果:
> $(".password_field_real") [ <div class="password_field_real" id="2" style="display: none;"></div>,<div class="password_field_real" id="3" style="display: none;"></div>,<div class="password_field_real" id="7" style="display: none;"></div>,]
但是,当我尝试得到class =“password_field_real”和id =“3”时,我得到一个两个div的列表,这是一样的!
> $("#3.password_field_real") [ <div class="password_field_real" id="3" style="display: none;"></div>,<div class="password_field_real" id="3" style="display: none;"></div> ]
其他两个div并不是这样:
> $("#7.password_field_real") [ <div class="password_field_real" id="7" style="display: none;"></div> ]
为什么会这样呢?
*更新*
Reproduced这在jsFiddle
*更新#2 *
如果使用非数字ID,则为works just fine.
解决方法
首先,页面上的id必须是唯一的.这就是背后的想法.
您的问题是使用无效的ID选择器(根据HTML4):
- ID and NAME tokens must begin with a letter ([A-Za-z]) and may be
followed by any number of letters,digits ([0-9]),hyphens (“-“),
underscores (“_”),colons (“:”),and periods (“.”).
在其他doctypes有不同的限制,但你总是需要至少一个字母.由于您只使用一个数字,因此无效.这可能是您使用非数字ID的所有细节时的解释.仍然是jQuery的一个奇怪的行为.
使用至少一个字母[A-Za-z]来填充你的ID,甚至更好地描述它.