Reloaded Jquery UI datepicker не работает в режиме инлайн - PullRequest
0 голосов
/ 13 ноября 2010

Я загрузил DatePicker пользовательского интерфейса во встроенном режиме. Итак, я делаю кнопки буксировки, чтобы загрузить и удалить его. Но когда я перезагружаю его снова. DatePicker показал, но не может выбрать день или месяц, и firebug сообщил об ошибке.

просто простой код: js:

var panelContents1 = $('<div />',{'id':'igto1_WH'}).append($('<div />',{'id':'igto1_whDatePicker'}).datepicker());

$('#load').click(function(){ $('#loadDiv').html(panelContents1); }) 
$('#empty').click(function(){ $('#loadDiv').empty(); })

и html:

<p id="load"> load </p>
<p id="empty"> empty </p>
<div id="loadDiv"></div>

Большое спасибо !!

Мое собственное решение:

 $('#load').click(function(){
    $('#loadDiv').html(panelContents1).find('#igto1_whDatePicker').datepicker();

        })

 $('#empty').click(function(){
          $('#igto1_whDatePicker').datepicker('destroy');
    $('#loadDiv').empty();
         })

 var panelContents1 = $('<div />',{'id':'igto1_WH'}).append($('<div />',{'id':'igto1_whDatePicker'}));

1 Ответ

0 голосов
/ 14 ноября 2010

Причина, по которой это происходит в вашей демо-версии, заключается в том, что вы создаете переменную panelContents1 и добавляете ее в DOM, а затем вызов $('#loadDiv').empty(); уничтожает жизненно важные элементы, необходимые для средства выбора даты.Позже вы добавляете к этой переменной ту же самую (набор элементов), которая является корнем всех ваших проблем.

В качестве исправления создание средства выбора даты в обработчике click создасткаждый раз новый, и у него нет этой проблемы с добавлением сломанного, например:

$('#load').click(function(){ 
    var panelContents1 = $('<div />',{'id':'igto1_WH'}).append($('<div />',{'id':'igto1_whDatePicker'}).datepicker());
    $('#loadDiv').html(panelContents1); 
});

Вы можете проверить это здесь .По сути, просто создайте новый элемент при добавлении, а не тот, на который влияли предыдущие взаимодействия DOM, такие как ваша демонстрация.Для тех, кто делает двойной дубль по приведенному выше коду, .html(jQueryObject) является ярлыком для .empty().append(jQueryObject).

...