Intereting Posts
PHP-методы, которые работают как в контексте, так и в статическом контексте? Изменение размера изображения перед загрузкой PHP Внедрение (безопасное) Api Keys в приложении Создайте JSON-объект правильным способом Страница входа выглядит как не перенаправление на следующую страницу, как я могу это исправить? Symfony2 Twig неограниченная глубина детства Конфигурация PHP. Небезопасно полагаться на настройки часового пояса системы Регулярное выражение PHP: разделение на неэкранированный разделитель REGEX для маскировки всех символов, кроме первого и последнего символов Можем ли мы сохранить данные ckeditor в файл doc Ошибка несанкционированной ошибки 401 GCM Как json_decode недействительный JSON с апострофом вместо кавычки Ошибка RequestTimeTooSkewed с использованием PHP S3 Class Когда использовать статические классы в PHP? Нажатие «enter» не публикует форму в IE8

Jquery submit не работает после ajax pagination

Я использую сценарий разбивки на страницы ajax, который отлично работает – https://github.com/gbirke/jquery_pagination

На первой странице все работает отлично, на каждой странице есть кнопки отправки (несколько форм), которые отправляют данные в базу данных через POST jquery.

Однако пост jquery работает только для форм / кнопок на первой загруженной странице. Если вы перейдете на другую страницу на странице, кнопка jquery post / submit не работает.

Любые предложения были бы высоко оценены, не могут показаться, чтобы понять это.

Фрагменты кода:

Сценарии разбиения на страницы

<script> $(document).ready(function() { $("#Pagination").trigger('setPage', [<?php echo $member_Program_Week_calc; ?>]); }); </script> <script type="text/javascript"> function pageselectCallback(page_index, jq){ var new_content = jQuery('#hiddenresult div.result:eq('+page_index+')').clone(); $('#Searchresult').empty().append(new_content); return false; } function initPagination() { // count entries inside the hidden content var num_entries = jQuery('#hiddenresult div.result').length; // Create content inside pagination element $("#Pagination").pagination(num_entries, { callback: pageselectCallback, items_per_page:1 // Show only one item per page }); } // When document is ready, initialize pagination $(document).ready(function(){ initPagination(); }); </script> 

Функция ajaxSubmit

 <script type="text/javascript"> $(document).ready(function() { $('#completetask_<?php the_sub_field('tasks_id'); ?>').submit(ajaxSubmit); // example function ajaxSubmit(){ $(this).find(':submit').attr('disabled','disabled'); var completetask = jQuery(this).serialize(); jQuery.ajax({ type:"POST", url: "/wp-admin/admin-ajax.php", data: completetask, success:function(data){ jQuery("#feedback").html(data); }, error: function(errorThrown){ alert(errorThrown); } }); return false; } }); </script> 

Код формы

 <form method="post" id="completetask_<?php echo $task_id; ?>"> <input type="hidden" name="program_id" id="program_id" value="<?php echo $program_id; ?>"/> <input type="hidden" name="session_id" id="session_id" value="<?php echo $session_id; ?>"/> <input type="hidden" name="task_id" id="task_id" value="<?php echo $task_id; ?>"/> <input type="hidden" name="action" value="completeTask"/> <input class="program_task_submit_no program_task_submit_no_<?php echo $task_id; ?>" type="submit" value="COMPLETE TASK"/> </form> 

Мне удалось решить эту проблему благодаря предложению от @charlietfl и немного дальнейшему исследованию.

Решение – это делегирование событий, используя функцию .on ().

С моим кодом я изменил код функции ajaxSubmit, используя функцию .on.

Простой пример:

 $(document).on('submit', '#completetask', function(e) { //CODE }); 

Мой обновленный код:

 $(document).on('submit', '#completetask_<?php the_sub_field('tasks_id'); ?>', function(e) { $(this).find(':submit').attr('disabled','disabled'); var completetask = jQuery(this).serialize(); var css = document.createElement("style"); css.type = "text/css"; css.innerHTML = ".program_task_title_<?php the_sub_field('tasks_id'); ?> { color: green !important; }"; document.body.appendChild(css); jQuery.ajax({ type:"POST", url: "/wp-admin/admin-ajax.php", data: completetask, success:function(data){ jQuery("#feedback").html(data); }, error: function(errorThrown){ alert(errorThrown); } }); return false; }); 

Я удалил исходный код функции ajaxSubmit.

Работа с CSS

Мне также понадобился CSS для выполнения, как только кнопка будет отправлена, которая изменила стиль формы. Тем не менее, смена страницы сбрасывается до нормального состояния. Для этого я выполнил стили CSS в скрипте.

 var css = document.createElement("style"); css.type = "text/css"; css.innerHTML = ".program_task_title_<?php the_sub_field('tasks_id'); ?> { color: green !important; }"; document.body.appendChild(css); 

Благодарю.