我无法从输入框中获取值

时间:2011-08-07 02:49:21

标签: javascript jquery dynamic input

我有几个动态创建的输入框,然后填充。当我尝试阅读这些内容时,我只是将“未定义”作为答案。这让我感到很生气,因为相同的代码在我的网络应用程序的其他地方无处不在。 我用来获取值的代码如下所示:

$('#box1.1').val()

所以这个应该返回id =“box1.1”的元素的值,我是对的吗?

Firebug控制台:

>>> $('#box1.1').val()
undefined

是的,我确实使用jQuery。版本1.6.2。

提前致谢!

5 个答案:

答案 0 :(得分:4)

你应该使用两个反斜杠来转义点,这样jQuery就不会将.1视为一个类。

$('#box1\\.1').val();

http://docs.jquery.com/Frequently_Asked_Questions#How_do_I_select_an_element_by_an_ID_that_has_characters_used_in_CSS_notation.3F

答案 1 :(得分:4)

通常最好将jQuery中的$函数视为接受逗号描述的CSS选择器列表的东西。在CSS中,.表示“类名为...的对象”因此,jQuery正在寻找具有类1的box1 id下的内容。基本上,在此示例中:

<div id="box1"><span class="1"></span></div>

jQuery会返回范围。在这个例子中:

<div id="box1.1"><span class="not_1"></span></div>

jQuery必须返回undefined

因为您的ID会导致CSS出现冲突,所以最好的办法就是从类名本身中删除.。通常情况下,_-会更好。

答案 2 :(得分:2)

这不是一个有效的id(至少用jQuery的说法):“box1.1”。你不能在id中有一个点,因为它会混淆jQuery选择器引擎,因为dot通常意味着一个类名。

您可以将ID更改为:“box1_1”并尝试。

这是一个演示小提琴:http://jsfiddle.net/UnUYP/

答案 3 :(得分:1)

在jQuery中,这个时期具有特殊意义。它们用于为类选择器添加前缀。 jQuery没有办法知道.1是ID的一部分,而不是一些名为1的CSS类。你应该使用一个没有特殊含义的字符,例如:一个下划线。

答案 4 :(得分:1)

不,这是在寻找id为“box1”且元素应用名为“1”的元素... 在jquery选择器中,#指的是一个id选择器(css​​选择器)和。是指一个班级名称。避免对id值使用句点的最佳做法