jQuery .load () функция обратного вызова стреляет многократно

в первый раз, когда код выполнен, он правильно производит:
завершенная загрузка

но в 2-й раз это производит:
завершенная загрузка
завершенная загрузка

3nd время это производит:
завершенная загрузка
завершенная загрузка
завершенная загрузка

и т.д.... так в 20-й раз, когда функция загрузки завершается, вызов назад функционируют, становится запущенным 20 раз.

$('#image-tag').load(function () {
        console.log("load complete");
    });
}).attr('src', 'image.jpg').appendTo('#main');

какая-либо идея, что вызывает вызов назад, функционирует для повторений/увеличивания как это?

6
задан Moudy 15 August 2010 в 21:50
поделиться

2 ответа

Это потому, что вы добавляете еще один обработчик событий каждый раз, когда запускаете этот код.

Если вы хотите добавить тег изображения к элементу, вы не должны использовать изображение, которое уже есть на странице. Вместо этого создайте новый тег изображения:

$('<img/>').load(function () {
  console.log("load complete");
}).attr('src', 'image.jpg').appendTo('#main');
11
ответ дан 8 December 2019 в 03:24
поделиться

Это похоже на то, как вы вызываете это внутри обработчика кликов или чего-то еще, это связывает new .load () обработчик каждый раз. Либо привяжите .load () один раз, либо используйте .one () , например:

$('#image-tag').one('load', function () {
    console.log("load complete");
});
18
ответ дан 8 December 2019 в 03:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: