Skip to main content
 首页 » 编程设计

jquery之使用 jQuery 通过 id 定位隐藏输入

2026年07月28日7lori

出于某种原因,我无法使用 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 等模式,那么您必须使用带有通配符的属性选择器。