2012-12-05 36 views
2

我正在動態創建對象。我想知道如何訪問它?其中一些對象需要通過其他方式隱藏,而不是點擊(以編程方式,點擊按鈕,鏈接等)。所以我不認爲我可以使用。我將如何去訪問這些來隱藏它們?如何訪問動態創建的對象

$(document).ready(function() { 
$('body').append('<div id="testdiv">Test DIV</div>'); 

}); 

$('#testdiv').hide(); 

回答

5

你扭轉了你的邏輯。取而代之的.append(),你應該使用.appendTo()

var myRef = $("<div id=\"testdiv\">Test DIV</div>").appendTo(document.body); 

這樣一來,你可以保持一個引用到新創建的DOM節點/jQuery對象

myRef.hide(); 

總是更好到緩存參考存儲到一個變量,這樣你就可以訪問由純ECMA土地一個節點,可以這麼說。 重新查詢對於DOM節點的需求,效率低得多。

請注意一個詞:變量var聲明的變量只有自己的函數範圍。這意味着如果你想從準備好的處理程序的「外部」訪問該引用,你需要在父上下文中聲明該變量。

+0

......或者只是在'appendTo()'之後鏈接'hide()'。 – ErikE

+2

或許應該澄清一下,myRef.hide()不能在doc之外,就像op目前有'$(「#testdiv」)。hide()' – Esailija

+1

@Esailija:我不認爲這是在範圍之內這個答案(JavaScript非常基礎)。我不知道OP的應用程序結構,命名空間等。 – jAndy

2

你有什麼應該已經工作,除非你需要移動$('#testdiv').hide();文檔準備(這樣你就不會調用它在創建元素之前)內。

其他答案是一個更乾淨的方式來做到這一點,以及我會做到這一點。