Использование domready для вызовов AJAX - PullRequest
3 голосов
/ 14 февраля 2010

Есть ли способ узнать, что элементы находятся в документе, прежде чем я попытаюсь получить к ним доступ с помощью JQuery?

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

var s = new AjaxCall(someurl);

s.oncomplete = function(response) {
    var container = $('container_id');
    container.innerHTML = response;
    var ul = $('some_id'); }

Ответом является некоторый HTML-код, возвращаемый вызовом Ajax.

Этот ответ обновляет содержимое div, и затем я получаю доступ к элементу, созданному innerHTML (ul в коде).

Если ответ велик, я думаю, что бывают моменты, когда некоторые элементы не будут отображаться, когда я попытаюсь получить к ним доступ. domready работает для вызовов AJAX, и может ли это решить мою проблему?

Ответы [ 2 ]

2 голосов
/ 24 февраля 2010

Вы, кажется, забыли использовать #, как и должно быть $('#some_id');, а не $('some_id');. Вместо этого я предлагаю просто использовать document.getElmenetById. Он читается более четко и намного эффективнее, чем контекстное сопоставление идентификаторов.

var some_id = document.getElmenetById("some_id");

Относительно вашего вопроса об элементе «недоступно», не беспокойтесь. Установщик innerHTML выполняет синхронную операцию. Если тег с соответствующим идентификатором анализируется, соответствующий элемент будет доступен сразу после установки innerHTML.

0 голосов
/ 14 февраля 2010

Если бы вы использовали jQuery, ваша success функция для запроса была бы:

$.ajax({
  url: "test.html",
  cache: false,
  success: function(resp){
    var ul = $("#containerID").html(resp).find("#ElementInRespID");
    //do something with ul
  }
});

Это поместит результат в контейнер, найдет нужный элемент и установит для него переменную ul.

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