Обновление DOM после вставки в jQuery - PullRequest
2 голосов
/ 11 октября 2009

Допустим, я использую jQuery для загрузки нового контента в определенный элемент DIV. Если я теперь хочу перехватывать события внутри этого элемента DIV, я предполагаю, что DOM нужно каким-то образом обновить? Как лучше всего с этим справиться?

Редактировать: Вот пример того, что я имею в виду:

<html>
  <head>
    <script type="text/javascript" src="jquery-1.3.2.min.js"></script>
    <script>
      $(document).ready(function(){
        $(".edit").click(function(){
          $(this).parent().load("edit");
        });
        $(".view").click(function(){
          $(this).parent().load("view");
        });
      });
    </script>
  </head>
  <body>
    <div class='someid'>
      <input type='submit' class='edit' value='Edit'>
    </div>
  </body>
</html>

, где файл edit на том же уровне содержит

<input type='submit' class='view' value='View'>

и файл 'view' содержит

<input type='submit' class='edit' value='Edit'>

Если вы попробуете это, вы увидите, что при первом нажатии «Изменить» кнопка изменится на «Просмотр», но больше не изменится. Почему это?

Ответы [ 3 ]

21 голосов
/ 23 января 2012

Поскольку jQuery 1.7.x, метод .live () устарел. Используйте .on () для подключения обработчиков событий. Если вы используете старую версию, вы должны использовать .delegate () вместо .live () .

Как упоминалось в справке, формат не сильно меняется, как показано в этом примере:

$ (селектор) .live (события, данные, обработчик); // jQuery 1.3 +
$ (документ) .delegate (селектор, события, данные, обработчик); // jQuery 1.4.3 +
$ (документ) .on (события, селектор, данные, обработчик); // jQuery 1.7+

Так, начиная с 1.7.x, оба, делегат и live заменены на .

5 голосов
/ 11 октября 2009

Использовать жить как это:

 $(".view").live("click",function(){
      $(this).parent().load("view");
    });
1 голос
/ 11 октября 2009

jQuery использует события " live " для обработки событий, происходящих в динамически добавленных элементах DOM, без необходимости вручную добавлять обработчики после обновления содержимого.

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