2013-10-09 2 views
2

Я хочу, чтобы какую-то часть моих JS для инициализации, когда документ будет готов или когда Ajax-запрос завершен
Что-то вроде этого:JQuery: как .ready() и .ajaxComplete

if ($(document).ready() or $(document).ajaxComplete()) { 
    // do something 
} 

Можно ли писать такие aa условие?
И как мне все исправить?

+1

Это, похоже, не имеет большого смысла. Это два совершенно независимых события. Вы обычно помещаете материал в обработчик 'ready', который должен получить доступ к DOM. Обратный вызов AJAX OTOH может быть выполнен до того, как DOM будет готов и элементы будут доступны. Пожалуйста, опишите фактическую проблему, которую вы пытаетесь решить. –

+0

Вы делаете запрос ajax перед загрузкой jquery? вы загружаете jquery перед html? если нет, нет, тогда я советую вам пойти на нет, а затем ваш вопрос станет неактуальным. – mikakun

ответ

6

и может использовать привязку функции

$(document).bind('ready ajaxComplete', function(){ 
    // Your code here 
}) 

Хотя я согласен с Феликсом в комментариях, что готов функция является отдельной функцией в основном используется для выполнения действий только тогда, когда весь документ загружен

+0

'.ready' и' .ajaxComplete' являются специальными функциями. Я не думаю, что вы можете заменить их '.bind'. –

+0

Чтобы протестировать: но в документе jQuery упоминается «jQuery запускает событие ajaxComplete» – LeGEC

+0

Я немного запутался и не уверен в собственном ответе. Готово & ajaxComplete рассматривается как события, такие как щелчок, изменение? –

4

Вы можете поместить ваш общий код в функции, и привязать его к так много событий, как вы хотите:

function doStuff(){ 
    // do something 
} 

$(document).ready(doStuff); 
$(document).ajaxComplete(doStuff); 

Как упоминалось Jigar: вы можете также использовать .bind('evtA evtB', func) или .on('evtA evtB', func), чтобы связать один и тот же обратный вызов с несколькими событиями за один раз.

Однако documentation для ready обратного вызова говорит:

Существует также $ (документ) .он ("готов", обработчик), нежелателен из JQuery 1.8.

+1

В этом случае ему нужно будет установить флаг, был ли код уже выполнен не позволяйте ему работать дважды. – Kiruse

+0

Ваш ответ кажется лучше .. без споров, чем у меня: p да, флага потребуется, как упоминалось @ Derija93 –

Смежные вопросы