javascript - jquery 延迟加载和其他 Jquery/javascript 函数在附加后不起作用

标签 javascript jquery ajax event-handling lazy-loading

我正在尝试创建一个页面,用户可以在其中查看图片并喜欢或不喜欢它们。为了使其用户友好,我正在创建一个函数,当用户单击“加载更多帖子”时,jquery将从服务器获取数据。我为此使用了append,但附加文件中的javascript函数不起作用(像lazy这样的函数加载,喜欢和不喜欢)这是我的代码示例。

<div id='updatepost' class='col-md-12'></div>
<div class='col-md-12'>
<button class='btn btn-default' id='loadmore'>Load more post</button>
</div>

<script>
pages1 = 5;
pages2 = 10;
$("#loadmore").on("click", function(event) {
event.preventDefault();
loadData = 'pages1=' + pages1 + '&pages2=' + pages2;
    $.ajax({
    type: "GET",
    url: "loadpost.php",
    data: loadData,
    cache: false,
    success: function(html) {
    $("div#updatepost").prepend(html);
    }
    });

});
</script>
<script type='text/javascript' src='js/loadpost.js'></script>

and here's the loadpost.php and javascript functionsfor likepost, dislikepost and lazy load don't work anymore.

<img data-original='upload-image/uploads/myiamge.jpg'  class='lazy'>
<span class='likepost'>like</span>
<span class='dislikepost'>dislike</span>

最佳答案

使用 lazy loader, which supports auto-initializing / self-initializing .

否则你需要在追加后调用初始化代码:

$("div#updatepost").prepend(html).find('img.lazyload').lazyload();

但如果您使用大量 AJAX,我真的建议使用上面链接的lazySizes 脚本。正常的 jQuery 延迟加载会在 AJAX 密集的网站上产生内存泄漏。

对于您喜欢/不喜欢的功能,您可以使用事件委托(delegate):

$('#updatepost').on('click, '.likepost', function(){
    //you like code
});

关于javascript - jquery 延迟加载和其他 Jquery/javascript 函数在附加后不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28554144/

相关文章:

jquery - Kendo Dropdownlist 未更新第一条记录上的 Kendo Grid 数据源?

jquery - Ipv4 验证 Jquery

javascript - 使用 html2canvas 将带有背景图像的 Canvas 保存到服务器

javascript - Chrome : Uncaught SyntaxError

jquery - Ajax 调用 servlet 并加载新页面

php - Javascript - 如何在轮播中添加暂停按钮?

javascript - Angularjs 中的递归调用

javascript - 如何在 Angular 6 中实现选择下拉列表(按搜索过滤),如何按名称属性过滤对象

javascript - 使用javascript启用提交按钮

jquery - 使用 Ajax 解析 ExpressionEngine 错误模板