由于某种原因,我无法使用jQuery通过id检索隐藏的输入。
我能做到
> $('input')
[<input type="checkbox" name="property-type" id checked>, <input type="checkbox" name="property-type" id checked>, <input type="checkbox" name="property-type" id>, <input type="checkbox" name="property-type" id>, <input type="hidden" name="no-of-rooms" id="1-rooms">, <input type="hidden" name="no-of-rooms" id="2-rooms" checked>, <input type="hidden" name="no-of-rooms" id="3-rooms" checked>, <input type="hidden" name="no-of-rooms" id="4-rooms">, <input type="hidden" name="no-of-rooms" id="5-rooms">, <input type="hidden" name="no-of-rooms" id="over-5-rooms">, <input type="checkbox" name="property-type" id>, <input type="checkbox" name="property-type" id>, <input type="checkbox" name="property-type" id>]
可以很好地获取页面上的所有输入,包括type = hidden。
我也可以
> $('input[type="hidden"]')
[<input type="hidden" name="no-of-rooms" id="1-rooms">, <input type="hidden" name="no-of-rooms" id="2-rooms" checked>, <input type="hidden" name="no-of-rooms" id="3-rooms" checked>, <input type="hidden" name="no-of-rooms" id="4-rooms">, <input type="hidden" name="no-of-rooms" id="5-rooms">, <input type="hidden" name="no-of-rooms" id="over-5-rooms">]
它让我得到了所有隐藏的字段。请注意,他们都有一个id。
出于某种原因,尝试按照其ID定位这些输入,无论是否包含[type="hidden"]
,都会为我提供一个空列表。
> $('input[type="hidden"]#2-rooms')
[]
> $('input#2-rooms')
[]
我设法找到了一种解决方法,只是没有通过ID来定位它们,但知道为什么这似乎不可能会很有用。
修改
仅使用$('#2-rooms')
对我有用,显然是最好的方法。
但是,我仍然不确定$('input#2-rooms')
为什么不起作用,因为我实际上包含了html5 doctype(<!DOCTYPE html>
),并且我理解以数字开头的ID应该在这种情况下没关系。
答案 0 :(得分:1)
使用属性选择器可以使用通配符,而不是使用id选择器。
$('[id$=rooms]')
或者,对包含
使用*
$('[id*=rooms]')
或者,如果您有包含ID的单个元素, live demo
$('#2-rooms')
编辑如果你有一个带id的单个元素,那么你可以简单地使用id选择器$('#2-rooms')
如果有多个元素具有相同的id,那么它就不是有效的html你应该有唯一的id。如果您的ids有2个房间,3个房间的模式,那么您可以使用带外卡的属性选择器。