Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 重复调用.load(),而不会导致重复的脚本_Php_Jquery_Mysql_Duplicates_Infinite Scroll - Fatal编程技术网

Php 重复调用.load(),而不会导致重复的脚本

Php 重复调用.load(),而不会导致重复的脚本,php,jquery,mysql,duplicates,infinite-scroll,Php,Jquery,Mysql,Duplicates,Infinite Scroll,我一直在努力解决这个问题,并从类似的答案中寻找答案,但似乎无法找到答案 我有一个使用.load()从外部PHP文件加载的活动提要。外部文件包含用于计算textarea中的字符数和截断长文章的脚本,例如: $('.watermark_comment').jqEasyCounter({'maxChars': 2000,'maxCharsWarning': 1990,'msgFontSize': '10px','msgFontColor': '#666666','msgFontFamily': 'Ar

我一直在努力解决这个问题,并从类似的答案中寻找答案,但似乎无法找到答案

我有一个使用.load()从外部PHP文件加载的活动提要。外部文件包含用于计算textarea中的字符数和截断长文章的脚本,例如:

$('.watermark_comment').jqEasyCounter({'maxChars': 2000,'maxCharsWarning': 1990,'msgFontSize': '10px','msgFontColor': '#666666','msgFontFamily': 'Arial','msgTextAlign': 'left','msgWarningColor': '#F00','msgAppendMethod': 'insertAfter' });  $('.truncate').jTruncate(); 
当页面第一次加载时,一切都很正常。但是,我在外部文件中还有一个脚本,用于创建无休止的滚动。“href”包含分页查询字符串:

$(window).scroll(function () { 
     if ($(window).scrollTop() >= $(document).height() - $(window).height() - 500) {
    //Add something at the end of the page
    $('<div></div>').appendTo('#activity_feed_load').load($('.older_posts:last').attr('href'));
    $('.older_posts:first').remove();
    }
    });
$(窗口)。滚动(函数(){
if($(窗口).scrollTop()>=$(文档).height()-$(窗口).height()-500){
//在页面末尾添加一些内容
$('').appendTo('#activity_feed_load').load($('.older_posts:last').attr('href'));
$('.older_posts:first').remove();
}
});
问题是,一旦调用scroll函数并再次调用.load,应用于提要中以前的任何选择器的脚本就会“加倍”。例如,每次调用.load()时,都会出现两个对应于jqEasyCounter的倒计时和两个对应于jTruncate的“更多”倒计时。每次调用.load时,实例数都会增加一个

我读过其他文章,讨论如何使用选择器删除脚本,然后使用getscripts正确加载文件。但是,当我调用.反复加载并附加结果时,我将如何执行此操作

非常感谢您在这方面的帮助

更新 好的,根据Kevin的建议,我已经从外部文件中删除了加载脚本,并将其放置在主文件中,如下所示:

$(window).scroll(function () { 
     if ($(window).scrollTop() >= $(document).height() - $(window).height() - 500) {
    //Add something at the end of the page
    $('<div></div>').appendTo('#activity_feed_load #no_script').load($('.older_posts').not(".ignore").attr('href')).done(function(){
    $('.older_posts').not(".ignore").addClass("ignore");
    $('.watermark_comment').not(".initialized").jqEasyCounter({
         'maxChars': 2000,
        'maxCharsWarning': 1990,
        'msgFontSize': '10px',
        'msgFontColor': '#666666',
        'msgFontFamily': 'Arial',
        'msgTextAlign': 'left',
        'msgWarningColor': '#F00',
        'msgAppendMethod': 'insertAfter'              
        }).addClass("initialized");

    });
    }
    });
$(窗口)。滚动(函数(){
if($(窗口).scrollTop()>=$(文档).height()-$(窗口).height()-500){
//在页面末尾添加一些内容
$('').appendTo('.#activity_feed_load#no_script')。load($('.older_posts')。not(“.ignore”).attr('href'))。done(function(){
$('.older_posts')。不(“.ignore”).addClass(“ignore”);
$('.watermark_comment')。不是(“.initialized”).jqEasyCounter({
《maxChars》:2000年,
《maxCharsWarning》:1990年,
'msgFontSize':'10px',
“msgFontColor”:“666666”,
“msgFontFamily”:“Arial”,
'msgTextAlign':'left',
“msgWarningColor”:“F00”,
“msgAppendMethod”:“insertAfter”
}).addClass(“已初始化”);
});
}
});

我正在尝试在加载后删除寻呼机链接,然后在下次调用加载时使用最新的寻呼机链接。不幸的是,当我滚动时脚本触发一次,然后页面冻结。不确定是否正确绑定滚动事件。我应该改用.on()还是.live()?

尝试使用以下命令仅加载外部文件的特定部分:

.load(theHref + " #someId");
接下来,使用事件委托来绑定事件

$(document).delegate("event","selector",event);
最后,使用done回调来初始化任何插件

$("#target").load(theHref + " #someId").done(function(){
    $(".someEl", "#target").not(".initialized").myPlugin().addClass("initialized");
})

您是否有机会更改加载的提要的内容?否则,在将脚本标记插入domI之前,我将从加载的数据中剥离脚本标记。它将为
.load
提供一个选择器,该选择器以需要追加的内容为目标
.load(theHref+“#someId”)
@gpasci感谢您的回复。我不确定我是否理解你的问题。是的,我可以更改外部文件的内容和结构。如果我从加载的数据中取出脚本,如何在页面中再次应用它们?这就是我一直坚持的部分。谢谢@kevin是的,我尝试过在外部文件中定位一个div,但是我没有脚本的功能。您知道如何为每个加载事件添加此项,以便不会在以前加载的项目中导致重复项吗?谢谢您可以使用事件委派绑定该功能吗?因此,事件委派脚本应该位于调用外部文件的主页面中,我应该从外部文件中删除所有脚本?如果我在.load回调中初始化插件,是什么阻止它们在每个.load中被多次加载?只针对正在加载内容的div中的那些。由于该div被清空,它将始终命中未初始化的元素。我认为问题在于我正在附加加载的内容。它并没有完全替换目标的内容。因此,当更多元素附加到div时,页面上已经存在元素。在这种情况下,使用类来区分已经初始化的元素和尚未初始化的元素。更新。