使用jQuery访问动态创建的项
Access dynamically created items using jQuery?
我有一个页面,其中一些html被动态添加到页面中。
这是创建的html和javascript:
<div>
<script type="text/javascript" language="javascript">
$('#btn').click(function() {
alert("Hello");
});
</script>
<a id="btn">Button</a>
</div>
在我的Firebug控制台中,我看到一个错误,上面写着:
TypeError:$("#btn")为空
jQuery最初加载在页面上。
我在这里做错了什么?
您必须将on()
(或在on()
方法中定义的事件)绑定到运行jQuery时DOM中存在的元素。通常这是在$(document).ready()
或类似设备上。
绑定到最接近的元素,$('#btn')
元素将被附加到该元素,该元素存在于页面加载/DOM就绪时的DOM中。
假设您正在将$('#btn')
加载到#container
div
中(例如),以给出:
<div id="container">
<div>
<a href="#" id="btn">Button text</a>
</div>
</div>
然后使用:
$('#container').on('click', '#btn', function(){
alert('Button clicked!');
});
使用.on
将事件连接到按钮。检查此SO答案:
动态创建的元素上的事件绑定?
$(document).ready(function() {
$('body').on('click', '#btn', function() {
alert("Hello");
});
})
编辑:我添加了文档就绪代码,您需要确保这样做。
已修复。
.on,它将把点击事件绑定到动态添加的节点。
$("#parent_container").on("click", "#btn", function () {
alert("hello")
})
文档:http://api.jquery.com/on/
尝试
<div>
<a id="btn">Button</a>
</div>
<script>
$('#btn').on('click', function() {
alert("Hello");
});
</script>
代码中的问题是在创建按钮之前将事件附加到按钮。
正确的版本是:
<div>
<a id="btn">Button</a>
<script type="text/javascript" language="javascript">
$('#btn').click(function() {
alert("Hello");
});
</script>
</div>
这应该能胜任工作。
使用jQuery 的.live()
函数
相关文章:
- 如何在javascript中创建动态json对象
- 如何创建动态ajax提交表单
- 如何在javascript中创建动态正则表达式
- 如何使用pouchdb创建动态查询(couchdb可能也是如此)
- 如何在jquery mobile中使用json文件创建动态下拉菜单
- 基于所选下拉列表值创建动态复选框
- 使用推动创建动态对象
- 在浏览器窗口中创建动态灵活的分割标记
- 将字符串与integer连接,用作jquery中的变量(创建动态变量)
- 创建动态javascript对象
- 如何使用指令属性值创建动态模板
- 使用 JavaScript 创建动态下拉列表
- 如何在创建动态 HTML 页面时使用日期选择器
- 使用javascript中的append创建动态下拉列表
- Jquery - 创建动态名称选择器
- 如何根据查询字符串值创建动态超链接
- 使用javascript创建动态多维关联数组
- 使用javascript创建动态二级下拉列表
- 在JavaScript中创建动态绑定
- 在JS中创建动态对象