为了简化问题,我们假设我们使用的代码与jquery ui portlets widget完全相同:
http://jqueryui.com/sortable/#portlets
我已经阅读了另一个关于stackoverflow主题的帖子,但它确实没有给我一个关于如何处理解决方案的线索,因为原始代码不再可用了
让我们想象一下将新portlet添加到现有列的最简单方法:
$( "#col0" ).append($('<div class="portlet ui-widget ui-widget-content ui-helper-clearfix ui-corner-all" id="p5">' +
'<div class="portlet-header ui-widget-header ui-corner-all">' +
'<span class="ui-icon ui-icon-minusthick"></span>' + "my title" + '</div>' +
'<div class="portlet-content">' + "my content" + '</div></div>'))
采用这种方法,我必须处理重要问题:
右侧标题角上的“+”按钮不适用于新的portlet。
标题和内容文本不会保留在div中。当文本达到div的边缘时,它会继续在外面。
我尝试使用此方法在stackoverflow中获取portlet的顺序。当您使用默认的jquery portlet加载应用程序时,它可以正常工作。
$( ".column" ).sortable({
connectWith: ".column",
delay: 150,
start: function(event, ui) {
ui.item.startPos = ui.item.index();
item = ui.item;
newList = oldList = ui.item.parent();
},
stop: function(event, ui) {
/*saveOrder();*/
console.log("Start position: " + ui.item.startPos);
console.log("New position: " + ui.item.index());
},
change: function(event,ui) {
if(ui.sender) newList = ui.placeholder.parent();
},
在我添加新的portlet之前和之后,当我尝试获取可排序的列元素时:
$("#obtain").button().click(function() {
console.log($("#col0").sortable('toArray').toString());});
它为每列提供了正确数量的元素(添加了新的元素),但是当我尝试在列之间移动新元素时,当您创建新的元素时,列中的位置是没有意义的。我认为它就像我应该每次创建一个新的portlet时再次执行start()函数,所以我可以获得正确的索引。但我不知道如何处理它。
非常感谢你的时间,我希望我能得到一些建议,
问候
答案 0 :(得分:1)
#1 我认为你错过了portlet-toggle类
<span class="ui-icon ui-icon-minusthick">
应该是
<span class='ui-icon ui-icon-minusthick portlet-toggle'>