Связывание с плагином jQuery UI после $ .load - PullRequest
1 голос
/ 02 мая 2010

У меня есть функция, которая присоединяет jQuery UI DatePicker (с моими параметрами) к переданному объекту jQuery:

function bindDatepicker($obj)
{
  if ($obj == null) $obj = $("input.date");

  $obj.datepicker(
    { 
      appendText: '(yyyy-mm-dd)',
      autoSize: true,
      changeMonth: true, 
      changeYear: true, 
      closeText: 'Done',
      dateFormat: 'yy-mm-dd',
      defaultDate: '+1m', 
      minDate: +1, 
      numberOfMonths: 2
    }
  );
}

Я вызываю это в начале каждой страницы, чтобы связать его с элементами ввода:

$(function() {
  bindDatepicker($("input.date"));
});

Это отлично работает. Моя проблема возникает, когда я загружаю элементы формы, используя $ .load (). Я не могу прикрепить DatePicker ни к одному из загруженных элементов. Например:

$("#id").load("urlToLoad", function() {
    bindDatepicker($("input.date"));
});

Отлично загружает элементы формы в div, но не присоединяет DatePicker.

Почему это? Я в тупике. (

Спасибо, Том

1 Ответ

2 голосов
/ 02 мая 2010

Вам необходимо использовать метод jQuery .live () . Он будет «прослушивать» любые новые элементы, которые соответствуют вашим критериям выбора.

РЕДАКТИРОВАТЬ: Таким образом, мой первоначальный ответ был неправильным. Метод .live () предназначен только для событий привязки. Как вы указали в своих комментариях, вы не можете привязать событие, если нет события для привязки. Поэтому я решил собрать образец и посмотреть, смогу ли я воспроизвести вашу проблему, и смогу. Что было страннее, если бы я попытался использовать селектор на основе атрибутов, а не селектор классов, он работал отлично.

Так что вместо того, чтобы

$('input.date').datepicker();

Я вставил туда новый атрибут с именем 'type' и имел следующий селектор:

$('[type=date]').datepicker();

и все заработало.

Понятия не имею, почему это так, но могу только предположить, что это ошибка в jQuery.

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