捕获元素"load"使用jQuery为append()-ed元素添加事件
Catching an element "load" event for append()-ed elements using jQuery?
所以,我有一个div (id="content"),我从AJAX请求中加载各种其他HTML。我希望能够告诉他们何时加载成功,但加载事件似乎不与append()工作。
我有这个简化的示例来说明这种情况(在实际情况中,'load'事件的侦听器注册在脚本部分加载的不同文件中)
<html>
<head>
<script
type="text/javascript"
src="http://code.jquery.com/jquery-latest.min.js">
</script>
</head>
<body>
<div id="content"><div>
<script type="text/javascript">
$(document).ready( function () {
// this does not seem to work
$("#myDiv").on('load', function () {
console.log("myDiv loaded");
});
// neither does this
$("#content").on('load', "#myDiv", function () {
console.log("myDiv loaded by delegation");
});
// the content to append will come from the network
$("#content").append($("<div id='myDiv'>myDiv</div>"));
});
</script>
</body>
</html>
当然,实际情况要复杂得多(加载的数据可以是任何东西),所以这些都不是有效的选项:
- 在div加载后调用一个函数
- 在加载的代码中嵌入了一个函数(代码是从模板文件生成的)
如果从Ajax请求中获取数据,则应该实际使用Ajax done()函数。由于调用是异步的,所以你不能监听div中的更改。另一个解决方案是在div上添加body委托,并使其监听更改事件。
$("body").delegate("mydividentifier", "change", function(f){});
$.ajax().done(function(f){});
相关文章:
- html,js-如何限制元素"范围“-命名空间
- 我如何选择/点击一个带有for=“”的元素"属性[量角器]
- "隐藏/显示”;元素和更改按钮背景图像
- 将元素添加到javascript中"字典“;大堆
- Javascript.替换元素“<termref/>"用规则的“;文本”;
- 使用javascript"随机引用“;脚本,但跨越两个独立的元素
- “间歇”;jqLite不支持通过选择器查找元素"当使用RequireJS加载AngularJS时
- 如何使用JQuery's”;.on()"方法来处理非本机jquery元素
- 为什么我的动画"重放的“;当通过innerHTML添加元素时
- jQuery:元素静止":隐藏的“;在.slideDown()之后
- 如何访问JSON元素-"JavaScript中名称中的字符
- "text长度"Internet Explorer中svg文本元素悬停时的更改
- ReactJS-将溢出的元素放入一个“"下拉按钮
- 浏览器中的观察者模式javascript:订阅事件"添加了Dom元素“;并处理这个元素
- Knockout.js"<!--ko if:-->"导致分离DOM元素的块
- 如何隐藏所有下一个"字段集“;元素使用jQuery
- 如何删除扩展属性“;jquery123456"来自元素
- 带错误的Onsen UI导航:您不能提供no"ons页”;元素到“;ons导航器”;当返回第一页时
- Javascript:如何检查一个元素是否是"显示”;在屏幕上
- 如何使用jquery操作元素,使其与css Selector相匹配"第n种类型”;