2009-11-07 23 views
0

我的頁面上有兩個div標籤,如下所示。當我引用itemName元素的值時,使用$('#itemName')。val();我在這兩個div中,我總是得到的元素在第一個div是「」(空白)的值。有沒有辦法使用jQuery獲取第二個div中的itemName元素的值,即facebox?使用jquery獲取facebox div內元素的值

信息的div

<div id="info" style="display: none;"> 
<center> 
<strong>Name</strong> 
<input id="itemName" type="text"/> 
<br/> 
<br/> 
<strong>Price </strong> 
<input id="itemPrice" type="text"/> 
<br/> 
<br/> 
</center> 
</div> 

facebox格

<div id="facebox" style="top: 27.3px; left: 478px; display: none;"> 
<div class="popup"> 
<table> 
<tbody> 
<tr> 
</tr> 
<tr> 
<td class="b"/> 
<td class="body"> 
<div class="content" style="display: block;"> 
<div id="info" style=""> 
<center> 
<strong>Name</strong> 
<input id="itemName" type="text"/> 
<br/> 
<br/> 
<strong>Price </strong> 
<input id="itemPrice" type="text"/> 
<br/> 
<br/> 
<input type="button" onclick="updateTab();" value="Add"/> 
</center> 
</div> 
</div> 

謝謝

回答

1

元素ID必須在文件中是唯一的。您的文件無效,這是後果之一。

利用validator,這是一種便宜的QA形式,可以輕鬆抓取一些低垂的果實。

+0

驗證器不會趕上以此爲facebox內容動態地從您選擇的內容創建。使用類而不是ID可能會更好。但我認爲他的真正問題是在揭示後從facebox獲取數據 - 這就是我的回答所要解決的問題。 – Mottie 2009-11-07 13:39:19

1

ID在頁面上必須是唯一的 - 簡單的答案是你需要重命名其中的一個。

如果你真的無法改變他們,那麼你可以使用這樣的事情:

$('#facebox input[type=text]:first').val(); 
+0

感謝Greg的回覆。問題是第二個div是使用facebox插件生成的,第一個div是它用來生成它的。 – miket 2009-11-07 10:22:39

3

如果你看裏面facebox.js,你會看到有facebox打開時所觸發的事件,所以你只需要綁定到該事件,然後獲取值:

$(document).bind('reveal.facebox', function() { 
$('#facebox #itemName').val(); 
}) 
+0

謝謝!你剛剛救了我幾個小時的頭撞。 – dave 2011-04-13 02:25:58