2016-12-22 2 views
0

У меня есть два документа, готовые события.JQuery во втором документе готово не работает

Первый, на странице (рабочий пост запрос вставки HTML форму), вставленный мой WP шорткодом:

<script type="text/javascript" > 
    jQuery(document).ready(function($) { 
     jQuery.post(
      ajaxUrl, 
      { 
       action: 'action', 
       nonce: 'nonce' 
      }, 
      function(response) { 
       $('#place').removeClass('preloader'); 
       $('#place').html(response); 
      } 
     ); 
    }); 
</script> 

Второму (он работал, пока я не добавил первый код на странице), в JS файл загруженные в сноске:

jQuery(document).ready(function($) { 
    $('#myform').submit(function(e) { 
     e.preventDefault(); 
/* some ajax call with form data*/ 
    }); 
}); 

Второе готово событие уволит, но $('#myform').submit не работает. Вы можете мне помочь?

+0

Если вы отлаживаете второй, я думаю, вы увидите '$ ('# myform')' не возвращает какой-либо элемент. –

+0

Возможно. Форма с id 'myform' вставляется в сообщение в первом событии. Итак, при загрузке второго js 'myform' не находится в документе ... Как это решить? – DocSS

+0

Имеет смысл положить '$ ('# myform'). Submit()' после '$ ('# place'). Html (response);', так как зависимость существует. –

ответ

0

Неправильно использовать функцию document.ready. Если вы включите скрипты на уровне нижнего колонтитула после всех необходимых элементов dom, они будут запускаться после того, как остальная часть документа и элементов загрузится, тем самым избавившись от необходимости в функциях готовности документа.

Непонятно, что вы делаете с функциями и как они могут взаимодействовать, но если кто-то меняет другой, убедитесь, что вы получаете нужные элементы. Хороший способ тестирования - открыть панель разработчика в браузере и скопировать/вставить код javascript, чтобы увидеть, что работает, а что нет. Вы можете ввести javascript в консоли и запустить его в реальном времени на dom, загруженном в ваш браузер.

+0

, но в dev консоли все элементы уже загружены. – DocSS

+0

Да, поэтому важно включить ваш скрипт в нижней части страницы после загрузки dom. Кроме того, если вторая функция зависит от первой, вызовите ее после завершения первого. Готовый документ не требуется –

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