5

由于某种原因,我无法使用 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 应该没问题。

4

1 回答 1

1

您可以使用属性选择器来使用通配符结尾,而不是使用 id 选择器。

$('[id$=rooms]')

或者,*用于包含

$('[id*=rooms]')

或者如果你有一个带有 id 的元素,现场演示

 $('#2-rooms')

编辑如果您有一个带有 id 的元素,那么您可以简单地使用 id 选择器$('#2-rooms')如果多个元素具有相同的 id,那么它不是有效的 html,您应该有唯一的 id。如果您的 id 具有像 2-rooms、3-rooms 这样的模式,那么您可以使用带有通配符的属性选择器。

于 2013-05-03T15:42:11.773 回答