вопрос загрузки JQuery - PullRequest
       7

вопрос загрузки JQuery

1 голос
/ 05 октября 2009

Я использую функцию загрузки jquery для прокрутки между страницами календаря на моей странице. Я использую эту функцию

$(document).ready(function(){
    $('a.cal').bind('click', function(e) {           
        var url = $(this).attr('href');
        $('div#calender').load(url); 
        e.preventDefault(); 
    });
});

для присвоения поведения якорям с классом "cal", которые в основном загружают следующую и предыдущую страницу календаря в контейнер каландра, # calender.

Проблема в том, что поведение работает только ОДИН РАЗ. Div прекрасно обновляется с новым контентом в первый раз, но последующие нажатия кнопок «следующий / предыдущий» приводят к загрузке новой страницы.

Может кто-нибудь помочь мне, пожалуйста?

Я предполагаю, что приведенный выше код назначает поведение якорям с классом 'cal' при первой загрузке, но нажатие на кнопку next / prev обновляет календарь в div, и эти навигационные кнопки не имеют ajax поведение.

Как я могу это исправить, хотя ... Я был бы очень признателен за вашу любезную помощь.

Спасибо.

Ответы [ 3 ]

3 голосов
/ 05 октября 2009

Используйте live , чтобы убедиться, что обработчик привязан ко всем текущим и будущим элементам:

  $('a.cal').live('click', function(e) {           
      var url = $(this).attr('href');
      $('div#calender').load(url); 
      e.preventDefault(); 
  });
0 голосов
/ 05 октября 2009

Вместо привязки используйте live

$('a.cal').live( 'click', function(e) {
   // your same click handling
});

Из документов http://docs.jquery.com/Events/live#typefn

Привязывает обработчик к событию (например, щелчку) для всех текущих и будущих элементов сопоставления

Что в основном означает, что всякий раз, когда новые элементы добавляются с классом cal, они автоматически привязывают к ним ваш обработчик событий

0 голосов
/ 05 октября 2009

вы можете попробовать использовать live("click"... вместо bind("click"...

live() использует делегирование события, тогда как bind() присоединяется непосредственно к элементу, поэтому, когда вы создаете новые элементы, которых не было на момент присоединения обработчика события, они не получают обработчик события.

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