我有几个动态创建的输入框,然后填充。当我尝试阅读这些内容时,我只是将“未定义”作为答案。这让我感到很生气,因为相同的代码在我的网络应用程序的其他地方无处不在。 我用来获取值的代码如下所示:
$('#box1.1').val()
所以这个应该返回id =“box1.1”的元素的值,我是对的吗?
Firebug控制台:
>>> $('#box1.1').val()
undefined
是的,我确实使用jQuery。版本1.6.2。
提前致谢!
答案 0 :(得分:4)
你应该使用两个反斜杠来转义点,这样jQuery就不会将.1
视为一个类。
$('#box1\\.1').val();
答案 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值使用句点的最佳做法