Почему мой объект теряет свой атрибут изменяемого размера и как мне его вернуть?

Вот пример моей проблемы. У меня есть вход, который обновляет мой текст div при изменении. Пользователь также может "перетаскивать" / "изменять размер" div по своему усмотрению. Проблема возникает после обновления текста через текстовый ввод. Как только текст изменился, div больше не "изменяет размер" с помощью мыши. Это ошибка? Как я могу прикрепить событие jquery 'resizable' после обновления текста?

Вот пример моего JS:

 $( "#text1" ).resizable({ ghost: true });
 $("#postcard").off("mouseover","#text1");
 $("#postcard").on("mouseover","#text1", function(){
   $('#text1').addClass('border_box');
 });
 $('#ti').on('change', function(){
   $('#text1').text($(this).val()); 
 });

1 ответ

Решение

jQuery добавляет дополнительную разметку в div, когда вы делаете его изменяемого размера. Когда вы устанавливаете текстовое значение для text1, он удаляет эту разметку. Самый простой способ исправить это - добавить в div диапазон, содержащий текст, который вы хотите изменить.

<div id="postcard" style="width:350px;height:100px">
    <div id="text1"><span id="text2">Hello there</span></div>
</div>
<input type="text" id="ti">

Затем измените это значение в вашем JavaScript:

$('#ti').on('change', function () {
    $('#text2').text($(this).val());
});
Другие вопросы по тегам