Как сделать редактор контента целью для перетаскивания с помощью jQuery-ui?
4 авг. 2011 г., 23:54:06
Просмотры: 12.8K
Голосов: 1
Я пытаюсь сделать редактор контента WordPress целью для перетаскивания с использованием jQuery UI drag and drop. Однако у меня не получается заставить работать событие drop или перетаскивание.
Что я упускаю?
<ul id="keywords">
<li>перетащи один</li>
<li>перетащи два</li>
<li>перетащи три</li>
</ul>
jQuery("#keywords").find("li").each(function(){jQuery(this).draggable(
{
helper:'clone',
start: function(event, ui){
jQuery(this).fadeTo('fast', 0.5);},
stop: function(event, ui) {
jQuery(this).fadeTo(0, 1);
}
});
});
jQuery('#content').droppable(
{
drop: function(event, ui)
{
alert('элемент сброшен в контент'); //НЕ СРАБАТЫВАЕТ!!!
jQuery(this).dropIt(ui.draggable.html());
}
});
if(typeof tinyMCE=='object')
{
alert('tinyMCE активен'); //НЕ СРАБАТЫВАЕТ!!!
jQuery('#editorcontainer').droppable(
{
drop: function(event, ui)
{
alert('элемент сброшен в tinyMCE редактор'); //НЕ СРАБАТЫВАЕТ!!!
//Динамически добавляем контент
tinyMCE.activeEditor.execCommand('mceInsertContent', false, 'Новый контент.');
}
});
}
Комментарии
Все ответы на вопрос
2
3
В приведенном выше примере следующая строка:
jQuery(".myDiv").find("li").each(function(){
должна быть заменена на:
jQuery(".keywords").find("li").each(function(){
Это позволит перетаскивать элементы списка.
Для того, чтобы элементы можно было бросать в текстовую область TinyMCE, подойдет следующий код.
$('#editorcontainer').droppable({
drop: function(event, ui) {
alert('элемент сброшен'); //ТЕПЕРЬ СРАБАТЫВАЕТ!
//Динамически добавляем контент
tinyMCE.activeEditor.execCommand('mceInsertContent', false, 'Новый контент.');
}
});

cheesypeanut
286
5 авг. 2011 г. 00:34:23
Комментарии
Это была просто ошибка ввода, когда я создавал вопрос. Я исправил её, но это не решает проблему. Событие drop по-прежнему не срабатывает.

5 авг. 2011 г. 00:52:54
0
Попробуйте объявить в теге body TinyMCE следующим образом, у меня это работает
В tiny_mce_src.js
t.iframeHTML += '</head><body ondrop="parent.drop(event);" " id="' + bi + '" class="mceContentBody '+ t.id +'_cl' + bc +'" onload="window.parent.tinyMCE.get(\'' + t.id + '\').onLoad.dispatch();"><br></body></html>';
На странице редактора:
function drop(ev)
{
ev.preventDefault();
var data=ev.dataTransfer.getData("Text");
tinyMCE.execCommand('mceInsertContent',true,data);
}
function allowDrop(ev) {
ev.preventDefault();
}
function drag(ev) {
var html = $('#'+ev.target.id).html();
ev.dataTransfer.setData("Text",html);
}
Кажется, использование jQuery с TinyMCE не работает...

Toccos
21
20 нояб. 2012 г. 02:02:42
Похожие вопросы
1
ответов
4
ответов
1
ответов
1
ответов
1
ответов