我很难过,很沮丧,所以有时间寻求帮助.做了很多谷歌搜索但尚未找到适合我的解决方案.
我所拥有的是一大堆可以使用Jquery排序的div,一些div包含一个TinyMCE实例.在你尝试移动包含TinyMCE实例的div之前,这一切都很好 - 当你做TinyMCE似乎刷新自己并创建一个新的实例,然后你丢失了数据等等.然后整个页面断开,因为javascript不再工作:).在这段时间里,我在Firebug中获得了javascript构造函数错误等.
我已经决定了最好的方法是当div开始被拖动时从文本区域移除tinymce并且当它被放置在它的新位置时插入tinymce.
我可以删除它,但无法将其添加回来 - 因为我得到更多的构造函数错误.
注意:TinyMCE会自动添加到我正在使用的系统中的所有文本区域,因此尽量避免弄乱TinyMCE.
在下面的代码中,我只是针对特定的textarea id进行测试.
$cols.sortable({
cursor: 'move',
revert: true,
opacity: 0.6,
placeholder: 'widgetplaceholder',
forcePlaceholderSize: true,
connectWith: cols,
zIndex:9000,
cancel: ".collapsable_box_editpanel_groups, .collapsable_box_content",
start: function(e, ui) {
// removes tinymce ok from textarea
tinyMCE.execCommand( 'mceRemoveControl', false, 'textarea1' );
},
stop: function(e,ui) {
// breaks here - constructor error
tinyMCE.execCommand( 'mceAddControl', true, 'textarea1' );
$(this).sortable( "refresh" );
}
});
Run Code Online (Sandbox Code Playgroud)
还有其他人有其他解决方案吗?如果您需要更多信息,请让我:)
我遇到了 jquery ui 可排序问题,无法拖动某些项目(我猜是因为项目元素的高度)
\n\n<div class="container">\n<fieldset>\n <legend>handle 1 THIS CAN\'T BE DRAGGED BELOW HANDLE 2</legend>\n <div>blah<br /></div>\n</fieldset>\n<fieldset>\n <legend>handle 2 BUT I CAN DRAG THIS ABOVE HANDLE 1</legend>\n <div style="display: none">blah<br /></div>\n</fieldset>\n
Run Code Online (Sandbox Code Playgroud)\n\n\n\n$(".container").sortable({\n axis: \'y\',\n handle: \'> legend\',\n containment: \'parent\',\n /*cursorAt: {top: 1},\n start: function(event, ui) {\n ui.placeholder.height(ui.item.height());\n $(this).sortable(\'refreshPositions\');\n },*/\n});\xe2\x80\x8b\n
Run Code Online (Sandbox Code Playgroud)\n\n请参阅http://jsfiddle.net/ADyhR/10/ \n编辑:它似乎适用于 jquery ui 1.8.9。这只是 1.8.18 中的一个错误吗?
\n\n注释掉的 javascript 行是我已经尝试过但还没有工作的东西,但我想我可能只是在使用它们的方式上略有偏差。
\n以下代码不会完全禁用start事件的sortables.它将添加类ui-sortable-disabled
和ui-state-disabled
可排序元素,但它不会禁用该功能 - 换句话说,可排序的外观被禁用,但它们仍然接受拖动的项目并且表现得像启用它们一样.
var assignedSortables;
var startDrag = function(event, ui) {
assignedSortables.each(function() {$(this).sortable('disable');});
};
var stopDrag = function(event, ui) {
assignedSortables.each(function() {$(this).sortable('enable');});
};
assignedSortables = $(".my-sortable-containers").sortable({
connectWith: '.my-sortable-containers',
start: startDrag,
stop: stopDrag
});
Run Code Online (Sandbox Code Playgroud)
我想要这样做的原因是拖动启动是因为我可能需要禁用已经包含被拖动项目的其他已连接的可排序项(为了简化我省略了逻辑).这是一个错误还是有办法绕过它?
我在jquery中使用sortable函数来对faq列表进行排序.不用说,我是这个概念的新手.任何人都有这方面的后端的任何好例子.我的前端工作正常,但更新数据库中的序列是另一回事.我的后端是ColdFusion btw.
提前致谢
奇怪的问题在这里.
使用使用TinyMCE作为文本编辑器的现有系统.
我创建了一个页面,其中包含使用jquery sortables的大量可移动div.现在TinyMCE似乎不喜欢在dom中移动所以在做了一些研究之后,似乎我必须从被移动的div中的文本框中移除tinymce实例并在拖动结束时将其添加回来.我可以删除实例,但是当我重新添加它时,它不会.
我有最新版本的TinyMCE,一个稍微旧版本的jQuery(尝试更新但没有运气).
无法解决这个问题因此这篇文章:)
$(function() {
$("#categoryorder").sortable({
opacity: 0.6,
cursor: 'move',
revert: true,
forcePlaceholderSize: true,
scrollSensitivity: 40,
start: function(e, ui) {
tinyMCE.execCommand( 'mceRemoveControl', false, 'textarea1' );
},
stop: function(e,ui) {
// won't add back here for some reason
tinyMCE.execCommand( 'mceAddControl', false, 'textarea1' );
$(this).sortable( "refresh" );
}
});
});
Run Code Online (Sandbox Code Playgroud)
不确定为什么它不会添加回来,任何想法?