ДОМ не полностью загружен? - PullRequest
3 голосов
/ 22 августа 2011

При использовании готового документа jQuery, т. Е. $(document).ready(function() { } есть ли вероятность того, что DOM еще не полностью загружен?

Я использую некоторые 3 rd инструменты для вечеринок (сетка Telerik) и вместо этого установил шаблон клиента для отображения флажка, как this . Код:

.ClientTemplate("<input type='checkbox' name='checkedRecords' value='<#= OrderID #>' />")

Причина, по которой я спрашиваю, заключается в том, что я пытаюсь подключить событие ко всем флажкам для мониторинга change:

$(':input').change(
    function () {
       alert('you fired!');
});

Я поставил флажок вручную вне кода сетки Telerik, и он подключается к изменению флажка, но ни один из флажков внутри сетки Telerik не делает ...

И в этом случае - есть ли обход?

Ответы [ 2 ]

8 голосов
/ 22 августа 2011

Попробуйте использовать вживую,

$(':input').live('change', function() {
                alert('you fired!');
            });

Редактировать

.live () устарела с версии 1.7 и удаляется с версии 1.9: Вместо этого в прямом эфире используйте on ()

5 голосов
/ 22 августа 2011

Нет шансов, что статически определенный DOM на странице HTML еще не загружен на $(document).ready(). Но если вы используете стороннюю библиотеку, которая динамически загружает или создает HTML, нет никакой гарантии, что библиотека сделала свое дело во время $(document).ready(). На самом деле, очень вероятно, что это не так.

У вас есть пара вариантов:

  1. Вы можете найти событие, которое запускается после того, как сторонняя библиотека создала свой HTML и, таким образом, флажки теперь существуют, а затем используют традиционный jQuery для их подключения.
  2. Вы можете использовать возможности .live() в jQuery для захвата событий даже для объектов DOM, которые еще не существуют в то время, когда вы указываете, что хотите подключиться к ним. Вы можете прочитать о .live() здесь: http://api.jquery.com/live/. Он работает в основном как обычный обработчик событий, за исключением того, что он работает только для некоторых событий, и есть некоторые различия в том, как вы можете остановить распространение.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...