Динамически изменять / назначать экземпляр пользовательского интерфейса с возможностью изменения размера для уже загруженных элементов DOM

#jquery #dom #jquery-ui-resizable

#jquery #dom #jquery-ui-resizable

Вопрос:

Я пытаюсь динамически назначить другой экземпляр jQuery-UI с изменяемым размером после загрузки DOM.

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

Селекторы, используемые для назначения resizable(), также динамически создаются после загрузки DOM.

Вот упрощенный пример моего кода:

jQuery:

 $(document).ready( function() {

    $('.lyr').addClass('loose');
    $('.lyr2').addClass('fixed');

$('#change').bind( 'click', function() {

    if( $('.lyr, .lyr2').hasClass('loose') ) {

        $('.lyr, .lyr2').addClass('fixed').removeClass('loose');

        $('#status').html('changed to fixed');

        $('.lyr, .lyr2').resizable({
            aspectRatio: true,
            handles: 'all'
        });

    } else {

        $('.lyr, .lyr2').addClass('loose').removeClass('fixed');    

        $('#status').html('changed to loose');

        $('.lyr, .lyr2').addClass('fixed'); 

    }

});

});
  

HTML:

 <input type='button' id='change' value='change'>

<div id="canvas">
    <p>Resizable items</p>
    <div class='lyr'></div>
    <div class='lyr2'></div>

</div>
  

Вот работающий пример:http://digitaloutback.co.uk/resizable-eg / (нажмите «Изменить», чтобы назначить начальный экземпляр с изменяемым размером)

Я также использовал плагин ‘live’ и ‘livequery’ вместо ‘bind’, поэтому я не уверен, в чем может быть причина проблемы..

Найдено решение

Ответ был прямо передо мной в документации jQuery UI:

изменять размер (‘уничтожить’) перед его повторным назначением.

 $('.lyr, .lyr2').resizable('destroy').resizable()..
  

Комментарии:

1. Решение найдено и добавлено к вопросу выше.

Ответ №1:

Ответ был прямо передо мной в документации jQuery UI:

изменять размер (‘уничтожить’) перед его повторным назначением.

 $('.lyr, .lyr2').resizable('destroy').resizable()..