gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 23:32:59 25 4
gpt4 key购买 nike

我一直在努力解决这个问题并在 SO 上搜索类似的答案,但似乎无法弄清楚。

我有一个使用 .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();
}
});

问题是,一旦调用滚动函数并再次调用 .load,应用到提要中之前任何选择器的脚本就会“加倍”。例如,每次调用 .load() 时,都会有两个对应于 jqEasyCounter 的倒计时和两个对应于 jTruncate 的“更多”。每次调用 .load 时,实例数都会增加一个。

我读过其他帖子,讨论如何使用选择器删除脚本然后使用 getscripts 正确加载文件。但是,当我重复调用 .load 并附加结果时,我该怎么做呢?

非常感谢对此的一些帮助!

更新好的,根据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");

});
}
});

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

最佳答案

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

.load(theHref + " #someId");

接下来,使用事件委托(delegate)来绑定(bind)事件,

$(document).delegate("event","selector",event);

最后,使用 done 回调来初始化任何插件。

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

关于php - 重复调用 .load() 而不会导致重复的脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9625132/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com