2010-07-02 38 views
2

我有一個動態創建的div,並帶有一個唯一的ID。我追加()到頁面上的一個區域。引用已被追加()編入內容的div(由id)

後來,我嘗試通過$('#id_here')引用它,但它不返回任何內容。 safari/chrome中的檢查器顯示元素的存在和正確的ID。

<script> 
$('#box').append('<div><input id="id123" /></div>'); 
//Later on in time... 

function doingStuff(){ 
    alert($('#id123'));//undefined 
} 
</script> 

<div id="box"> 

</div> 
+0

它的工作原理:http://jsbin.com/ajihe/edit(點擊預覽) – galambalazs 2010-07-02 23:46:07

+0

我們需要更多信息。您聲明該元素已成功添加到頁面中。然後它應該是可訪問的。這裏缺少一些東西。 – user113716 2010-07-02 23:52:15

+0

另外,alert($('#id123'));'不應該顯示'undefined',即使沒有找到元素。 – user113716 2010-07-03 00:00:14

回答

1

你做得對,它只是你的警報聲明,可能有點關閉。目前,你將jquery結果傳遞給alert(),它只報告「[object objerct]」(無論在Chrome中,它對於每個瀏覽器都會有所不同)。

嘗試:

alert($("#id123").val()); 

這將提醒在文本框中的值。

alert($("#id123")[0].id); 

這將提醒輸入(ID123)的ID。

也許你在代碼的其他地方有錯誤?你發佈的內容工作正常。

UPDATE

正如其他人所指出的(我錯過了),你的腳本運行前的div會附加到文件,因此「不確定」。通過包裹所有內容防止腳本運行:

$(document).ready(function() 
{ 
    // Script here 
}); 

是要走的路。

+0

或者使用'$(「#id123」).length'來查看jQuery找到了多少元素,在我的firefox情況下爲0 :) – 2010-07-02 23:55:04

+1

'$(selector)'永遠不會返回'undefined'。如果DOM加載或不加載,它將始終返回一個jQuery對象(雖然它是空的)。 – user113716 2010-07-03 00:03:27

3

確保在DOM準備好之前追加對象,否則您可能無法訪問#box。

$(document).ready(function() 
{ 
    $('#box').append('<div><input id="id123" /></div>'); 
}); 
+2

問題指出,該元素已成功添加到頁面,所以它不應該是DOM就緒問題。 – user113716 2010-07-03 00:01:43

0

告訴jQuery在追加div之前等待document to be ready。這樣,文檔(和#box)被加載並準備好在jQuery開始工作之前使用。您可通過執行此操作:

$(document).ready(function() { 
    $('#box').append('<div><input id="id123" /></div>'); 
}); 

您可以保持代碼的其餘部分,因爲它是

0

我用得到角落找尋這種類型的問題,最好的辦法是使用.live() Jquery的,其附加一個處理程序,以所期望的事件要在存在的元件或元件用於創建以後(如.append())...

例:

$('#box').append('<div><input id="id123" /></div>'); 

$('#id123').live('click', function() { 
    // Your Desired Code for that ID 
}); 

閱讀更多關於此:Jquery .live()

+0

假設你的問題是準確的,你的元素被創建,並且在被引用的瀏覽器中,它顯示得很好,所以...在頁面加載時有一個.live(),例如,你可以分配代碼以執行該特定ID這將在適當的時間創建! (或許我誤解了你的問題,並要求你澄清一下);) – Zuul 2010-07-03 00:13:31

+0

沒有Dana只有... – 2010-07-03 00:57:00

0

評論我這個糟糕的黑客一起和未經測試的例子都是公平的。

原來我的問題是我的div id中的一個特殊字符。

這是一個漫長的一天。

+1

我打算鼓勵你,但我不想毀掉你的代表。 \ m/;-) – 2010-07-03 00:55:59