出于某种原因,我无法使用 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> ),并且我知道在这种情况下以数字开头的 ids 应该没问题。
请您参考如下方法:
您可以使用属性选择器来使用通配符结尾,而不是使用 id 选择器。
$('[id$=rooms]')
或者,使用 * 表示包含
$('[id*=rooms]')
或者,如果您有一个带有 id 的元素, live demo
$('#2-rooms')
编辑 如果您有一个带有 id 的元素,那么您可以简单地使用 id 选择器 $('#2-rooms') 如果多个元素具有相同的 id 那么这不是有效的 html,你应该有唯一的 id。如果您的 ID 具有 2-rooms、3-rooms 等模式,那么您必须使用带有通配符的属性选择器。
