2012-12-05 39 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();文档准备(这样你就不会调用它在创建元素之前)内。

其他答案是一个更干净的方式来做到这一点,以及我会做到这一点。