使用 jquery .live() 与当前和未来的 DOM 一起工作
usage of jquery .live() to work with both present and future DOM
我有我的jQuery代码
$('#tarea').click(function() {
// Do stuffs
});
这对于与此脚本一起加载的按钮 #tarea 工作正常。如果按钮 #tarea 将来使用 ajax 加载,则上面的代码不起作用。
现在我将代码更改为
$('#tarea').live('click', function() {
// Do stuffs
});
这一次,如果与脚本一起加载,则按钮 #tarea 不起作用。但是,如果使用 ajax 生成,则该脚本可以使用该按钮。
我如何编写脚本,以便在这两种情况下它都能工作?
.live()
这两种情况下都有效,无需执行任何额外的操作。 我会检查您的代码中是否有其他一些问题可以阻止这种情况发生。
重要提示:要检查的一件事是确保您的.live()
事件已绑定,并且它不依赖于其他事件的发生。发布JavaScript文件的重要部分可能会有所帮助。就我个人而言,我喜欢在全球范围内宣布我的.live()
活动。
我做这样的事情:
// this is what I mean by global because it is outside the document.ready
$("#test").live("click", function() {
// do stuff
});
$(function() {
// do stuff when document is ready
});
如果你想证明我上面所说的,你只需要把按钮和.live()
的JavaScript代码放在一个新的HTML文件中。
你把:
$('#tarea').click(function() {
// Do stuffs
});
在函数中。
当你通过ajax加载时,你在.load()的第二个参数中添加一个回调函数(上面的那个)
例如:
.load(target_url, function() { $('#tarea').click(function() { blablabla; }})
相关文章:
- 在单击任何位置时隐藏元素,而不检查每次DOM单击
- 是否有任何snippet或jQuery插件可以列出easylist.txt模式匹配的DOM中的所有元素
- 在不使用JQuery的情况下隐藏DOM中的选定元素
- 如何在DOM元素上按类型构建此函数
- Windows形成web浏览器控件和Javascript更改的DOM
- Datatables:通过DOM数据源中的名称引用列
- 在DOM中查找一个模式并替换它's的内容使用jquery
- DOM事件通过JSON转换为java
- 将DOM节点值与字符串Javascript进行比较
- delete在Object上效率低下,但在DOM Element's的数据属性,与null out相比
- 流星中DOM的繁殖
- DOM元素和angular元素之间的主要区别是什么
- 当带有渲染器的DOM元素不在屏幕顶部时,移动了场景的坐标
- 如何将Knockout.JS与服务器已经在DOM中呈现的数据同步
- PHP-如何重定向到同一页面并更改DOM's
- 如何使用ViewCompiler手动编译DOM的一部分
- 从popup.js|Chrome扩展访问DOM
- React DOM offsetHeight before rendering
- Mobile Safari、jQuery以及绑定到未来的DOM元素
- 使用 jquery .live() 与当前和未来的 DOM 一起工作