javascript - 将数据加载到控件中时,JQuery 和文档就绪会重复触发

标签 javascript jquery html ajax web

出于某种原因,自从我将加载函数添加到文档就绪中的控件(意味着当当前文档已加载)。

这些是我在 head 标签中使用的脚本,这些脚本包含在所有页面中(加载到另一个页面的页面将具有相同的脚本,我怀疑这就是导致问题的原因):

<script src="http://code.jquery.com/jquery-1.8.3.js"></script>
<script src="http://code.jquery.com/ui/1.9.2/jquery-ui.js"></script>
<script src="scripts/mainscript.js"></script>

mainscript.js代码:

var counter = 1;
var hasLoaded = false;
$(document).ready(function () {

if (!hasLoaded) {
    hasLoaded = true;
    if ($('.next-page').attr("data-loaded") == "false") {

        console.log(counter + ") STARTED LOADING!");
        $(this).attr("data-loaded", "true");
        $('.next-page').load($('.next-page').attr("data-link"), function () {
            counter++;
            $(this).attr("data-loaded", "true");
            console.log(counter + ") FINISHED LOADING!");
        });

    }
}

$('.tbDropDownBig li').click(function (e) {
    $(this).parent().parent().find('input').val($(this).text());
    $(this).parent().fadeOut(100);
});

});

上面 console.log 命令的输出:

1) STARTED LOADING! 2) FINISHED LOADING! 1) STARTED LOADING! 2) FINISHED LOADING! 2) FINISHED LOADING!

检测问题的方向: 加载到“下一页”的页面在加载时运行与文档加载相同的脚本(因为所有页面都有此脚本)。

因此它会再次加载数据。这就是为什么我放置了 data-loaded 属性,但它没有帮助。

最佳答案

通过停止使用“ready”来解决,而是将“load”事件绑定(bind)到窗口,如下所示:

function LoadNextPage() {
    if (!hasLoaded) {
        $('.next-page').load($('.next-page').attr("data-link"), function () {
            $(this).attr("data-loaded", "true");
            hasLoaded = true;
        });
    }
}

$(window).bind("load", function() {
    LoadNextPage();
});

关于javascript - 将数据加载到控件中时,JQuery 和文档就绪会重复触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21190728/

相关文章:

javascript - Web Audio API 循环与 SVG 动画同步

javascript - 使用 javascript (jQuery) 拖动图像时出现问题

javascript - 滚动到顶部时更改导航背景颜色 JQUERY

javascript - Chai/Node.js : Expect(value). to.be.NaN 问题

javascript - Google 跟踪代码管理器 - dataLayer 具有先前的值

javascript - 从框架内获取浏览器高度

html - 为什么网站显示异常? HTML + CSS

jquery - 在 jquery 中使用 css 将 div 拉伸(stretch)到浏览器高度

javascript - 如何在不实际使用 <form> 的情况下使用 Bootstrap 表单布局?

javascript - 当用户尝试在新选项卡中打开链接时,如何在 iframe 中打开链接?