2011-08-07 63 views
0

我有幾個輸入框可以動態創建,然後填充。當我嘗試閱讀這些內容時,我只是將「未定義」作爲答案。這使我很沮喪,因爲相同的代碼在我的web應用程序的其他地方無處不在。 我用抓值的代碼看起來是這樣的:我無法從輸入框中獲取值

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

所以這應該使用id =「box1.1」返回元素的值,是嗎?

Firebug的控制檯:

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

是的,我也使用jQuery。版本1.6.2。

在此先感謝!

+0

您的選擇器試圖獲取此元素:'' –

回答

2

這不是一個有效的ID(至少用jQuery的說法):「box1.1」。你不能在id中有一個點,因爲它會混淆jQuery選擇器引擎,因爲dot通常意味着一個類名。

您可以更改ID以說:「box1_1」並嘗試。

這裏有一個演示小提琴:http://jsfiddle.net/UnUYP/

+0

它實際上是一個有效的ID – grc

+0

按照HTML規範,是的。但不是用jQuery的說法!更新了我的答案。 – Mrchief

+0

這段時間可以很容易地逃脫。 http://jsfiddle.net/Fc46Q/ – Yahel

1

在jQuery中,週期具有特殊的意義。它們用於爲類選擇器添加前綴。 jQuery無法知道.1是ID的一部分,而不是一些名爲1的CSS類。您應該使用一個沒有特殊含義的字符,例如下劃線。

1

沒有那是尋找一個ID爲「box1」的應用程序名爲「1」... 在jquery選擇器中#引用一個id選擇器(CSS選擇器)和。指的是一個類名。最佳做法,以避免使用期間的ID值

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中的衝突,所以您最好打賭就是簡單地從類名稱本身中刪除.。通常_-將是優選的。

+0

這絕對是最簡單的例子。的。語法被保留來描述一個類,但是你開始使用一個ID作爲散列(#)。這些是衝突的,並導致你的未定義的返回值。 – Jake