В HEAD моего документа загружаю jQuery.js, а также плагин blockUI jQuery.
В PHP я затем использую обычный AJAX для загрузки другого содержимого PHP в DIV. В исходном модуле PHP jQuery и blockUI работает нормально, но в любом из загруженных ajax divs jQuery и blockUI оба абсолютно ничего не делают. Нет ошибок в консоли, никаких предупреждений – ничего.
Я начинающий jQuery, и ни одна из других статей, которые я нашел по этому вопросу, не смогла поставить меня на край решения, поэтому я помогаю кому-то другому. В моем коде ниже вы увидите, что я сделал некоторые удары в live () …
Это находится в верхней части моего PHP-файла, загружаемого в DIV
<script type="text/javascript"> $(document).ready(function() { $('#crazy').live('click',function() { $.blockUI({ message: $('#question'), css: { width: '275px' } }); }); $('#yes').live('click',function() { // update the block message $.blockUI({ message: "<h1>Remote call in progress...</h1>" }); $.ajax({ url: 'wait.php', cache: false, complete: function() { // unblock when remote call returns $.unblockUI(); } }); }); $('#no').live('click',function() { $.unblockUI(); return false; }); }); </script>
Вот HTML из этого файла PHP (загруженного в DIV):
<input id="crazy" type="submit" value="Show Dialog" /> <div id="question" style="display:none; cursor: default"> <h1>Would you like to contine?.</h1> <input type="button" id="yes" value="Yes" /> <input type="button" id="no" value="No" /> </div>
Функция загрузки документа загружается при загрузке DOM до завершения вызовов AJAX. Таким образом, он применяет только .live()
к элементам, которые существуют до вызовов AJAX.
Если вы хотите применить вещи к содержимому, загруженному вызовами AJAX, укажите функцию обратного вызова для AJAX, которая применяет надлежащие материалы после завершения загрузки.
В чем проблема, которую вы получаете с live
версией? Он все еще терпит неудачу?
Возможно ли, что запрос AJAX в #yes
события #yes
?
Я взял ваш код и упростил его на jsfiddle здесь , и, похоже, он работает нормально. Нет проблемы с использованием live
и он должен исправить этот обработчик событий для элементов, вставленных через AJAX.
Вы пытались просто бросать предупреждения в методах событий, чтобы узнать, вызваны ли они вообще?