2015-10-09 3 views
2

Возможно ли сделать функцию строго только один раз? Как и в случае, один раз за раз загружается страница.Как остановить функцию jQuery .load() от стрельбы более одного раза?

Я использую:

$(document).ready(function() { 
    $("#targetDiv").load("http://www.example.com #specificElementID"); 
}); 

Я нахожу, что, если нажать на всем протяжении страницы много раз, пока это нагрузка, что иногда кажется, дважды нагрузить? Есть ли способ предотвратить это действие более одного раза? У меня создалось впечатление, что с помощью $(document).ready(function() { ... я смогу добиться этого. Но, похоже, это не так!

+0

Ваш опубликованный код будет называться только один раз. 'Я нахожу, что если вы щелкаете по всей странице много раз, пока загружается, что иногда кажется, что она загружается дважды? Я думаю, ваше наблюдение ошибочно. Если вы используете какое-либо событие click, тогда разместите соответствующий код –

+4

Этот фрагмент кода хорош. Покажите нам другой код. Попробуйте представить эту проблему в JSFiddle. –

+0

Ничего из приведенного кода не вызовет этой проблемы. Повторится ли тот же самый код? – charlietfl

ответ

4

Обработчик ready не будет вызываться более одного раза в обычных случаях. Однако, если ваш файл загружен дважды, это приведет к вызову готового обработчика дважды.

Использование булева флаг может скрыть реальную проблему (но вы должны увидеть, что корневая проблема):

var _ready = false; 
$(document).ready(function() { 
    if (_ready) { return; } 
    _ready = true; 
    $("#targetDiv").load("http://www.example.com #specificElementID"); 
}); 

Для получения дополнительной информации см этого родственного вопроса: jQuery $(document).ready() fires twice

+2

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

+0

@charlietfl У моего брата была такая же проблема, и мы решили это. Интересно, вызывает ли метод загрузки вызов готового обработчика дважды или что-то связанное с этим. Кажется, что '' iframe 's может создать такое поведение '(http://stackoverflow.com/questions/10727002/jquery-document-ready-fires-twice#comment13935697_10727036). –

+0

@charlietfl Я отредактировал свой ответ. –

1

добавить эту строку

$("#some_id").unbind('change'); 

перед тем

$("#targetDiv").load("http://www.example.com #specificElementID"); 
Смежные вопросы