Javascript 使用jQuery访问动态创建的项?
我有一个页面,其中一些html被动态添加到页面中 这是创建的html和javascript:Javascript 使用jQuery访问动态创建的项?,javascript,jquery,html,Javascript,Jquery,Html,我有一个页面,其中一些html被动态添加到页面中 这是创建的html和javascript: <div> <script type="text/javascript" language="javascript"> $('#btn').click(function() { alert("Hello"); }); </script> <a id="btn">Button&
<div>
<script type="text/javascript" language="javascript">
$('#btn').click(function() {
alert("Hello");
});
</script>
<a id="btn">Button</a>
</div>
$('#btn')。单击(函数(){
警惕(“你好”);
});
按钮
在Firebug控制台中,我发现一个错误,上面写着:
TypeError:$(“#btn”)为空
jQuery最初加载到页面上
我在这里做错了什么?您正在查找。在这里,它会将单击事件绑定到动态添加的节点
$("#parent_container").on("click", "#btn", function () {
alert("hello")
})
文档:您必须将on()
(或on()
方法中定义的事件)绑定到运行jQuery时DOM中存在的元素。通常这是在$(document).ready()
或类似位置
绑定到最近的元素,在该元素中,$('#btn')
元素将被追加,该元素存在于页面加载/DOM就绪时的DOM中
假设您正在将$('#btn')
加载到#容器中
div
(例如),以给出:
<div id="container">
<div>
<a href="#" id="btn">Button text</a>
</div>
</div>
试一试
按钮
$('#btn')。在('click',function()上{
警惕(“你好”);
});
使用上的。将事件连接到您的按钮。选中此项,然后回答:
编辑:我添加了文档就绪代码,您需要确保这样做
已修复。代码中的问题是在创建按钮之前将事件附加到按钮
正确的版本是:
<div>
<a id="btn">Button</a>
<script type="text/javascript" language="javascript">
$('#btn').click(function() {
alert("Hello");
});
</script>
</div>
按钮
$('#btn')。单击(函数(){
警惕(“你好”);
});
这应该可以完成这项工作。使用jQuery的功能就足够了。但是,如果#btn
是动态生成的,这将不起作用:)这对动态元素没有帮助。该语法不会绑定到动态添加的节点。是的,你是正确的。关注backbonejs太久了,把它们搞混了。动态添加了什么?如何操作?即使DOM尚未就绪,代码也不应导致该类型错误。您是否也在使用prototypejs
?TypeError:$(“#btn”)为空
不是因为动态元素。。告诉我们什么是动态元素语法不会绑定到动态添加的节点我不认为这是一个问题<代码>类型错误:$(“#btn”)为空
不是在动态元素上抛出的东西。@Vega:我没有注意到这个错误。嗯。那么,很可能元素一开始没有被正确选择?正如jQuery文档中关于.live()的一条注释:“从jQuery 1.7开始,.live()方法已被弃用。使用.on()来附加事件处理程序。jQuery旧版本的用户应该优先使用.delegate(),而不是.live()
<div>
<a id="btn">Button</a>
</div>
<script>
$('#btn').on('click', function() {
alert("Hello");
});
</script>
$(document).ready(function() {
$('body').on('click', '#btn', function() {
alert("Hello");
});
})
<div>
<a id="btn">Button</a>
<script type="text/javascript" language="javascript">
$('#btn').click(function() {
alert("Hello");
});
</script>
</div>