Отложить выполнение JavaScript, пока содержимое не будет добавлено в документ - PullRequest
1 голос
/ 09 октября 2010

Я пытаюсь загрузить некоторый контент на страницу, используя Ajax. Загруженный HTML содержит некоторый код JavaScript. Даже если код обернут в $(document).ready, он выполняется до того, как содержимое вставлено в документ, поскольку Dom родительского документа готов к моменту загрузки содержимого.

Как отложить выполнение кода, пока содержимое не будет вставлено в документ. Вот HTML, который я пытаюсь загрузить (это код для openid-selector )

<script type="text/javascript" src="/js/openid-jquery.js"></script>
<script type="text/javascript">
$(document).ready(function() {
    alert('ajax-html');
    openid.init('openid_identifier');
});
</script>
<!-- Simple OpenID Selector -->
<form action="try_auth.php" method="get" id="openid_form">
    <input type="hidden" name="action" value="verify" />

    <fieldset>
            <legend>Sign-in or Create New Account</legend>

            <div id="openid_choice">
                <p>Please click your account provider:</p>
                <div id="openid_btns"></div>
            </div>

            <div id="openid_input_area">
                <input id="openid_identifier" name="openid_identifier" type="text" value="http://www.joycebabu.com" />
                <input id="openid_submit" type="submit" value="Sign-In"/>
            </div>
    </fieldset>
</form>

Обновление : удален тег noscript

1 Ответ

1 голос
/ 09 октября 2010

Кажется, проблема в том, что openid.init () загружает свои собственные данные, и вы хотите манипулировать этими данными после их синхронной загрузки.Существует несколько решений:

Связать функцию обратного вызова, которая выполняется после завершения асинхронной загрузки.Разве openid lib не предлагает вам эту функциональность?

Если вы знаете действительные селекторы элементов данных, которыми вы хотите манипулировать до того, как они были добавлены в DOM, вы можете использовать .live ().

Я заметил, что вы используете тег noscript.Я настоятельно рекомендую против этого.Делайте все ваши манипуляции с DOM через JS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...