Проблема с $ .ajax в jquery - PullRequest
       8

Проблема с $ .ajax в jquery

0 голосов
/ 15 декабря 2010

сначала я использую $ .ajax для загрузки html-кода на мою html-страницу

for(var i=0;i<5;i++)
{
    $.ajax({
        type: "get",
        url: "test.xml",
        async: false,   //without set the async to false could cause problem,I also don't konw why
        dataType: "html",
        timeout: 2000,
        success: function (xml) {
             var $temp_code = $(xml).find("test[id='" + i+ "']").find("html_code").html();
            //the html code is like <div class="test"></div>……
             $($temp_code).appendTo($(".wrapper")).show();
    });
}

Код может нормально работать на странице, html-код в xml может быть прочитан правильно. Затем я хочу дать каждый "тест"div bind a click function

подобно

        $(".test").click(function () {
            alert("");
        });

, но это не может быть успешным, нажимайте каждое« тестовое »предупреждение ничего

, затем я пытаюсь поместить его в $.ajax complete, например:

$.ajax({
   ……
   complete:function(){
            $(".test").click(function () {
                alert("");
            });
   }
})

Это может работать только для первого «тестового» div, это означает, что только нажатие на первый «тест» может привести к предупреждению

Как я могу решить эту проблему?клик работает в каждом «тесте»,

Спасибо!

Ответы [ 3 ]

1 голос
/ 15 декабря 2010

То, что вы хотите, примерно так, что также намного быстрее, поскольку он использует результат этого AJAX-запроса (который должен быть одинаковым) для цикла, вместо того, чтобы делать запрос повторно, какthis:

$.ajax({
  type: "get",
  url: "test.xml",
  dataType: "html",
  success: function (xml) {
    for(var i=0;i<5;i++) {
      var $temp_code = $(xml).find("test[id='" + i+ "']").find("html_code").html();
      $($temp_code).appendTo($(".wrapper")).show().find(".test").click(function () {
        alert("");
      });
    }
  }
});

Это связывает .click() только с теми элементами, которые он только что добавил, .test <div> элементами, созданными $($temp_code).

0 голосов
/ 15 декабря 2010

В первом фрагменте скрипта вам нужно обратиться к xml.d, чтобы получить доступ к содержимому возврата из вашего GET.

success: function (xml) {
             var $temp_code = $(xml.d).find("test[id='" + i+ "']").find("html_code").html();

Я думаю, что это также позволит вам работать с обработчиком кликов.

0 голосов
/ 15 декабря 2010

Попробуйте использовать .live () (http://api.jquery.com/live/)

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