从脚本后加载的处理程序追加数据
Appending data from a handler loaded after the script
我做了一个显示用户Facebook照片的网站。下面的代码将照片附加到div"facebook-images"中。这部分工作正常。我遇到的问题是图像是在加载下面的 Javascript 代码后附加的;因此,当浏览器读取底部的单击函数代码时,不会创建处理程序"FB-image",因此它不起作用。
我相信我需要使用 jQuery on()
,但是在哪里?我试图在下面的代码中随处on()
。我尝试过与附加绑定,我尝试过实时(我知道它已被弃用,但值得一试)。没有任何效果。
有什么想法吗?
<div class="target">
</div>
<div id="facebook-images">
</div>
<script>
$.when(window.deferredes.fbLoaded, window.deferredes.fbLoggedIn).then(function () {
$.getJSON('https://graph.facebook.com/me/photos?access_token=' + FB.getAccessToken(), function (data) {
$.each(data.data, function (i, face) {
$('#facebook-images').append("<div class='fb-image'><img src='" + face.source + "' ></div>");
});
});
});
$(".fb-image img").click(function () {
$(".target").append("<h1>hi</h1>");
});
</script>
解决此问题的最简单方法是在将图像插入页面后添加单击处理程序。
<script>
$.when(window.deferredes.fbLoaded, window.deferredes.fbLoggedIn).then(function () {
$.getJSON('https://graph.facebook.com/me/photos?access_token=' + FB.getAccessToken(), function (data) {
$.each(data.data, function (i, face) {
$('#facebook-images').append("<div class='fb-image'><img src='" + face.source + "' ></div>");
});
$(".fb-image img").click(function () {
$(".target").append("<h1>hi</h1>");
});
});
});
</script>
如果需要,还可以使用委派事件处理。 为此,请在使用 .on()
运行事件处理代码时确实存在的公共父级上设置事件处理程序,并通过向它传递如下选择器来使用委托形式的.on()
:
<script>
$.when(window.deferredes.fbLoaded, window.deferredes.fbLoggedIn).then(function () {
$.getJSON('https://graph.facebook.com/me/photos?access_token=' + FB.getAccessToken(), function (data) {
$.each(data.data, function (i, face) {
$('#facebook-images').append("<div class='fb-image'><img src='" + face.source + "' ></div>");
});
});
});
$("#facebook-images").on('click', ".fb-image img", function () {
$(".target").append("<h1>hi</h1>");
});
</script>
.on()
的委托形式的工作方式如下:
$(selector of static parent).on(event, selector that matches dynamic object, fn);
相关文章:
- 如何使用url加载程序在webpack中导入多个图像
- keyup事件处理程序更改焦点不适用于快速键入
- 用程序搜索JQuery数据表中的文本
- Javascript:selenium Web驱动程序isDisplayed()不工作
- Canvas Html5绘图应用程序,移动画布会导致重大问题
- Emberjs应用程序加载在除Index之外的所有路由上
- 表追加而不附加最后一个元素
- ExtJS 5用程序点击actioncolumn gridview
- 使用电话间隙在Android应用程序中显示SQL Lite的数据
- 如何从Java/scala调用js美化程序
- 在AngularJS应用程序中使用封装指令和路由的推荐方式是什么
- Windows8应用程序(html&Javascript):从图片库(除了文件选择器)显示图像的另一种方式
- 从脚本后加载的处理程序追加数据
- jQuery - 追加/替换事件侦听器(当事件处理程序未知时)
- 将标签追加到 URL 的状态提供程序
- 应用程序重新启动后追加到文件 - Phonegap
- Backbone.js模型urlRoot网络应用程序文件夹名称被追加了两次
- 如何借助该事件处理程序创建的元素在事件处理程序之外动态追加元素?
- 将我的事件处理程序追加到现有处理程序之前
- 应用程序在追加数据时卡住