2014-09-04 4 views
0

У меня есть html div и я клонирую его с помощью JQuery. Этот div содержит метки и текстовые поля. Иды всех из них генерируются и назначаются динамически. У меня нет проблем с этим. Скрипт java присваивается текстовому полю исходного div. Клонированные текстовые поля не имеют назначенного ему javascript.Назначить java-скрипты для клонированного HTML-элемента

сценарий мне нужно назначить:

<script> 
      $(function() { 
       $("#datepick_onBooking,#datepick_Pay1,#datepick_Pay2,#datepick_totPay,#datepick_deedFees").datepicker(); 
      }); 
     </script> 

скрипт я использую, чтобы сделать клоны:

<script> 

      var i = 3; 
      //When DOM loaded we attach click event to button 
      $(document).ready(function() { 

       $('#addAnotherPayment').click(function() { 

        var cloned = $('.PayDiv0').first().clone(); 
        var noOfDivs = $('.PayDiv0').length+2; 
        cloned.insertBefore("#totPayForm"); 

        // append count to the ids 
        cloned.attr('id', 'PayDiv' + noOfDivs); 
        cloned.find('label').attr('id', 'PayLbl' + noOfDivs); 
        cloned.find('input[type="text"]').attr('id', 'datepick_Pay'+ noOfDivs); 
        cloned.find('input[type="number"]').attr('id', 'amount_Pay'+ noOfDivs); 

        cloned.find('.PayLbl2').html("Payment No " + i++ + ':'); 
       }); 

      }); 
     </script> 

datepick_Pay1, datepick_Pay2, datepick_totPay, datepick_deedFees статические элементы, и они были назначены на сценарий. Я создаю текстовые поля, используя клонирование как datepick_Pay3,datepick_Pay4 и т. Д.

Я не могу понять, как динамически назначать скрипт этим вновь созданным элементам. Как я могу это сделать?

+0

Посмотрите на делегированные события http://learn.jquery.com/events/event-delegation/ –

ответ

5

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

var cloned = $ ('. PayDiv0'). First(). Clone (true);

+0

ты мой герой :) – vigamage

+1

Если вы действительно получили проблему решены, пожалуйста, примите ответ –

1

когда вы клонировать что-то особенно элементы, имеющие события параметр использования в качестве клона (истинной)

Но это будет harmfull на основе того, как событие, прикрепленное на фактический элемент при копировании событий в клонированной элемент может влияют на фактическое.

0

Необходимо клонировать событиями. . http://api.jquery.com/clone/

вар клонировали = $ (».) PayDiv0' первый() Клон (правда).

Затем ваш сценарий должен быть изменен для работы с динамическими элементами. Здесь, как только элементы ввода получат фокус, выберите команду datepicker на основе селектора id дикой карты, если она еще не указана.

$(function() { 
      $('body').on('focus',"input[id^=datepick_]", function(){ 
       if(!$(this).hasClass('.hasdatepicker')) 
       { 
       $(this).datepicker(); 
       } 
      });  
}); 
Смежные вопросы