我想先說說我正在嘗試做什麼。我目前正在研究一個菜單生成器(idk如何正確命名它),就像在WordPress中放置小部件但是用於在網站上創建菜單一樣。我嘗試過使用jQuery和Sortable(我嘗試過Draggable和LiveQuery,但這不是我正在尋找的),但我遇到了一些問題:jQuery可排序拖放 - 克隆和其他問題
- 用戶應該被賦予隱藏項目的內容,但隱藏/取消隱藏它的按鈕隱藏/取消隱藏後複製項目
- 應該克隆源項目並且不移動(但使用佔位符 - 我找不到可拖動的佔位符)列表(我有一個臨時解決方案,將源項目添加到列表末尾,但這不是我想要實現的)
- 該項目必須從一列移動到另一列(即從#column1到#column2 ,而不是#列1 - >#COLUMN1 [相同與#列2]而不是#列2 - >#列1)
下面的代碼:
的JavaScript:
$(function(){
$('.dragbox').each(function(){
$(this).find('.dragbox-content').css('display', 'none');
});
$('.dragbox')
.each(function(){
$(this).hover(function(){
$(this).find('h2').addClass('collapse');
}, function(){
$(this).find('h2').removeClass('collapse');
})
.find('h2').hover(function(){
$(this).find('.configure').css('visibility', 'visible');
}, function(){
$(this).find('.configure').css('visibility', 'hidden');
})
.click(function(){
$(this).siblings('.dragbox-content').toggle();
})
.end()
.find('.configure').css('visibility', 'hidden');
});
$('.column').sortable({
connectWith: '.column',
handle: 'h2',
cursor: 'move',
placeholder: 'placeholder',
forcePlaceholderSize: true,
opacity: 0.4,
stop: function(event, ui){
if (ui.target == event.target) alert("Error!");
$(ui.item).find('h2').click();
$(ui.item).clone().appendTo(event.target);
$(event.target).each(function(){
$(this).find('.dragbox-content').css('display', 'none');
});
},
remove: function(event, ui) {
if (ui.target == event.target) alert("Error!");
}
});
});
和HTML:
<h3>Drag n Drop - menu test</h3>
<div class="column" id="column1">
<div class="dragbox" id="item1" >
<h2>category</h2>
<div class="dragbox-content" >
Name: <input type="text"/>
</div>
</div>
<div class="dragbox" id="item2" >
<h2>button</h2>
<div class="dragbox-content" >
Text: <input type="text"/><br />
Link: <input type="text"/>
</div>
</div>
<div class="dragbox" id="item3" >
<h2>html code</h2>
<div class="dragbox-content" >
<textarea></textarea>
</div>
</div>
</div>
<div class="column" style="width: 49%;" id="column2" >
</div>
我知道它可能看起來混亂,所以有一個例子是我的意思: http://hun7er.pl/poligon/dragndrop/ 該代碼是基於該教程:http://webdeveloperplus.com/jquery/collpasible-drag-drop-panels/
正如你可以看到只有目標物品的內容可以隱藏/不隱藏,有時在試圖隱藏/取消隱藏物品時可能會被意外克隆。我在這裏,在stackoverflow和其他地方(谷歌搜索)搜索了一個解決方案,但幾乎所有解決方案都涉及到Draggable或LiveQuery,我不知道如何在那裏使用佔位符(正如我所說我找不到任何教程/線程/帖子可拖動&佔位符)。
我想過使用正則表達式來更改項目ID(它對所有克隆的項目都保持不變),但是idk如何獲取項目ID並使用Firebug對其進行更改似乎沒有幫助。 對不起,如果有一個類似的線程,但我找不到任何(我現在唯一可以看到沒有解決方案)。
預先感謝任何幫助