引用已附加()到内容中的div(按id)

时间:2010-07-02 23:41:06

标签: javascript jquery

我有一个div,我是动态创建的,具有唯一的ID。我将()附加到页面上的某个区域。

稍后,我尝试通过$('#id_here')引用它,但它什么也没有返回。 safari / chrome中的Inspector显示元素的存在和正确的id。

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

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

<div id="box">

</div>

5 个答案:

答案 0 :(得分:3)

确保在DOM准备好之前附加对象,否则您可能无法访问#box。

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

答案 1 :(得分:1)

你做得对,这只是你的警告声明可能有点偏。目前,您将jquery结果传递给alert(),它只报告“[object Objerct]”(无论如何都在Chrome中。每个浏览器都会有所不同。)

尝试:

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

这会警告文本框中的值。

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

这会警告输入的id(id123)。

也许您的代码中的其他地方有错误?你发布的内容很好。

<强>更新

正如其他人指出的(我错过了),你的脚本在div附加到文档之前运行,因此是“未定义的”。通过将所有内容包装在:

中来防止脚本运行
$(document).ready(function()
{
    // Script here
});

是要走的路。

答案 2 :(得分:0)

告诉jQuery在追加div之前等待document to be ready。这样,文档(和#box)被加载并准备好在jQuery开始工作之前使用。你这样做:

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

您可以保留其余代码

答案 3 :(得分:0)

我以前用来解决这类问题的最好方法是使用来自Jquery的.live(),它将一个处理程序附加到所需的事件上,以便在以后创建的现有元素或元素上使用(如.append())...

<强>例:

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

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

Jquery .live()

了解详情

答案 4 :(得分:0)

关于我的黑客攻击和未经测试的例子的评论都很公平。

原来我的问题是我的div id中的一个特殊字符。

这是漫长的一天。