Утренние люди. Как сделать мой javascript или jquery работать в динамически сгенерированном контенте.
В принципе, я создал веб-страницу, которая генерирует содержимое, основываясь на том, что пользователь нажимает на меню навигации.
Проблемы, с которыми я сталкиваюсь:
Информация, полученная путем поиска:
Метод jQuery.load () игнорирует тег скрипта, который поставляется вместе с тем контентом, созданным динамически.
Поэтому я стараюсь:
Пример contact.php
<script type="text/javascript"> $(function() { $("#submitUser").click(function(e) { var fname = $("#fname").val(); $("#theresult").text(fname); e.preventDefault(); }); }); <form id="contactForm"> <label for='fname' >First Name</label><br/> <input id="fname" type="text" name="fname" maxlength="100" /> </form> <div id="theresult"></div>
Когда этот contact.php динамически генерируется на другую страницу, он не работает. Когда я нажимаю кнопку «отправить», консоль не показывает ответ. похоже, что jquery не существует.
Но когда я открываю его в браузере, он работает.
Для динамически генерируемых элементов вы должны делегировать события, вы можете использовать метод on
:
$(function() { $(document).on('click', '#submitUser', function(e) { var fname = $("#fname").val(); $("#theresult").text(fname); e.preventDefault(); }); });
Метод live()
устарел .
Принимая дикий удар в темноте здесь, так как ваш вопрос не очень хорошо описан, но, возможно, вы пытаетесь использовать .click()
и т. Д., Чтобы привязывать события к тем, которые динамически загружаются на страницу?
Если это так, вы, вероятно, захотите посмотреть на .on()
.
Вам нужно использовать живое событие.
Например, если ваш сгенерированный контент содержит событие click, вы можете сделать это:
$(".something").live("click", function({ // do something )};
Для динамически генерируемых полей используйте метод .on () JQuery:
$(document).on('click', '#MyID', function(e) { e.preventDefault(); // or you can use "return false;" });