Привязать плагин jQuery к живому элементу - PullRequest
1 голос
/ 13 апреля 2011

Просто простой вопрос, но я не могу связать функцию плагина с живым элементом, который был клонирован.

$('.add-another').live('click', function()
{
   var self = $(this);
   var clonedElement = self.parents('.row').clone();

   clonedElement.find('input.datepicker').bind('click', function()
   {
       $(this).datepick({ rangeSelect: true });
   });
});

Я использую этот плагин (яне используя jQueryUI, ни его datepicker).Так как же я могу привязать функцию плагина к клонированному / живому элементу?

РЕДАКТИРОВАТЬ: Вот демоверсия jsFiddle .

Ответы [ 2 ]

3 голосов
/ 13 апреля 2011

Вы привязываетесь к идентификатору (# add-another). Стандарт гласит, что в любой момент может быть только один элемент с данным идентификатором.

Итак, это не будет работать так, как задумано. Измените id на класс (т.е. # на an.) И попробуйте снова:)

Другая возможная проблема может заключаться в том, что HTML просто не имеет ожидаемой структуры, а некоторые запросы не выполняются. Мы сможем отладить это, если вы разместите структуру HTML:)

Редактировать : Вы привязывались к событию «click», что на самом деле было неверно - вы можете создать указатель даты одновременно с созданием элемента HTML.

Вот новый код:

$('.row input.datepicker').datepick({ rangeSelect: true });

$('span.add-another').live('click', function()
{
    var self = $(this);
    var clone = self.parents('.row').clone();

    $('input.datepicker', clone).datepick({ rangeSelect: true });
    $(clone).insertAfter(self.parents('.row')).hide().slideDown('fast');

    self.remove();
});

Кроме того, у меня для вас плохие новости - плагин datepicker не работает :)
Похоже, что средство выбора даты может отображать только один элемент выбора даты на странице.
Вы должны либо исследовать, как показать несколько, либо просто использовать jQueryUI.

Как видите, здесь только у исходного объекта есть указатель даты: http://jsfiddle.net/qZn8d/7/ И здесь только добавленный объект first имеет указатель даты: http://jsfiddle.net/qZn8d/6/

Так что, да, плагин сломан, извините:)

1 голос
/ 13 апреля 2011

вы пытаетесь привязать функцию к клонированному объекту, которого еще нет в DOM. Вставьте его в дом

OR

Использовать live вместо привязки с клонированным объектом

...