Я боролся с этим и искал похожие ответы на SO, но, похоже, не могу этого понять.
У меня есть фид активности, который я загружаю из внешнего файла PHP с использованием .load().Внешний файл содержит сценарии для подсчета символов в текстовой области и усечения длинных сообщений, таких как:
$('.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, и два 'more', соответствующих jTruncate.Каждый раз, когда вызывается .load, количество экземпляров увеличивается на единицу.
Я читал другие посты, в которых обсуждается, как правильно загружать файлы с помощью селектора для удаления скриптов, а затем с помощью getcripts.Но как мне это сделать, когда я неоднократно звоню .load и добавляю результаты?
Буду очень признателен за помощь в этом!
Обновление Хорошо, основано на Кевинепредложения, я удалил скрипт загрузки из внешнего файла и поместил его в основной файл следующим образом:
$(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");
});
}
});
Я пытаюсь удалить ссылку на пейджер после загрузки, а затем использовать последнюю ссылку на пейджерв следующий раз вызывается нагрузка.К сожалению, скрипт запускается один раз, когда я прокручиваю, а затем страница зависает.Не уверен, правильно ли я связываю событие прокрутки.Должен ли я использовать вместо этого .on () или .live ()?