На этот раз мне потребовалось некоторое время, чтобы проанализировать, прежде чем я задам вопрос.
ПРОБЛЕМА:
У меня есть несколько элементов div, в которых есть несколько детей с 'contenteditable = "true"'.
Если я добавлю много текста в каждый div" contenteditable = "true" ", а затем начну его перетаскивать, моя производительность резко упадет.
Поэтому я изменяю деления 'contenteditable = "true"' на поля ввода.
Производительность продолжает падать так же.
Находясь на сайте, я использую инструменты разработчика, чтобы удалить contenteditable от всех детей, и производительность при перетаскивании превосходна.
ВОЗМОЖНОЕ РЕШЕНИЕ:
Временно удалите атрибут «contenteditable» или установите его в «false» при начале перетаскивания и добавьте реверс после остановки: я просто не знаю, как именно это сделать, будет ли это похоже на то, чтоЯ сделал с высотой заполнителя при запуске?
понадобится sometimeng, который делает что-то вроде этого:
$(this).find('.twoxboximage,twoxboxheader,twoxboxtext').remove(attr("contenteditable"));
Но я не знаю точный синтаксис, этомой HTML и сортируемый JS.
$('#description_list').sortable({
cancel:'.smallbox',
axis:'y',
tolerance: 'pointer',
placeholder: "sortable-placeholder",
start: function(e, ui){
ui.placeholder.height(ui.item.height());
//code that removes every contentneditable="true" from specific children from dragged div
},
stop: function(){
copycontent();
//code that adds every contentneditable="true" from specific children from dragged div
}
});
$('#description_list').sortable({
connectWith: 'smallbox-wrapper'
});
<div id="description_list" class="bigbox">
<div class="smallbox-wrapper twoxboxicon" id="row1">
<div class="widewrapper">
<input type="button" class="swapbutton" value="⇔"><input type="button" class="deletebutton " value="X" title="Löschen" onclick="delete_row('row2')">
</div>
<div class="smallbox twob1">
<div id="title" class="smallbox twoxboximage" contenteditable="true" placeholder="image.."></div>
<div id="title" class="smallbox twoxboxheader" contenteditable="true" placeholder="header.."></div>
<div id="title" class="smallbox twoxboxtext" contenteditable="true" placeholder="Text.."></div>
</div>
<div class="smallbox twob2">
<div id="title" class="smallbox twoxboximage" contenteditable="true" placeholder="image.."></div>
<div id="title" class="smallbox twoxboxheader" contenteditable="true" placeholder="header.."></div>
<div id="title" class="smallbox twoxboxtext" contenteditable="true" placeholder="Text.."></div>
</div>
<div class="up"></div>
<div class="down"></div>
</div>
<div class="smallbox-wrapper twoxboxicon" id="row2">
<div class="widewrapper">
<input type="button" class="swapbutton" value="⇔"><input type="button" class="deletebutton " value="X" title="Löschen" onclick="delete_row('row2')">
</div>
<div class="smallbox twob1">
<div id="title" class="smallbox twoxboximage" contenteditable="true" placeholder="image.."></div>
<div id="title" class="smallbox twoxboxheader" contenteditable="true" placeholder="header.."></div>
<div id="title" class="smallbox twoxboxtext" contenteditable="true" placeholder="Text.."></div>
</div>
<div class="smallbox twob2">
<div id="title" class="smallbox twoxboximage" contenteditable="true" placeholder="image.."></div>
<div id="title" class="smallbox twoxboxheader" contenteditable="true" placeholder="header.."></div>
<div id="title" class="smallbox twoxboxtext" contenteditable="true" placeholder="Text.."></div>
</div>
<div class="up"></div>
<div class="down"></div>
</div>
... and so on
</div>
Есть идеи?
Очень ценят и любят
Грамм
--EDIT 1 -
Хорошо, у меня работает этот KINDA, но у меня есть две проблемы:
$('#description_list').sortable({
cancel:'.smallbox',
axis:'y',
tolerance: 'pointer',
placeholder: "sortable-placeholder",
start: function(e, ui){
ui.placeholder.height(ui.item.height());
ui.item.find(".twoxboxheader, .twoxboximage, .twoxboxtext").each(function(){
$(this).prop('contenteditable', false);
});
},
stop: function(){
copycontent();
ui.item.find(".twoxboxheader, .twoxboximage, .twoxboxtext").each(function(){
$(this).prop('contenteditable', true);
});
}
});
$('#description_list').sortable({
connectWith: 'smallbox-wrapper'
});
Он не применяет contentneditable обратно к элементу, я не знаю, почему.
Кроме того, было бы лучше применить contenteditable = 'false' к каждому '.smallbox-wrapper' внутри '#description_list', поскольку на производительность также влияет, если я перетаскиваю элемент, имеющий contenteditable 'true'.
Я постараюсь решить эту проблему и опубликовать ответ здесь, каждый может помочь: D
искренне
Грамм
- РЕДАКТИРОВАТЬ 2 -
ОК, забыл пользовательский интерфейс для остановки: функция
stop: function(e, ui){}
Попытается применить эту процедуру к каждому дочернему элементу внутри '#description_list' и опубликоватьответ здесь.
искренне
грамм