Hiya! Я разместил demo, где вы можете перетащить элемент списка и поместить его в меню аккордеона.
Ключ к этому случаю связывает событие dropover
, связанное с сценарием .droppable()
. Но это не идеально, потому что закрытая высота аккордеона по-прежнему используется, когда вызывается событие dropover, поэтому заголовок отлично подходит для удаления элемента, но скрытый список под ним не всегда регистрируется и аккордеон закрывается. Вам нужно будет вернуть перетаскиваемый элемент и начать заново. Вы увидите, что я имею в виду, когда вы возитесь с демо. Во всяком случае, вот основная установка:
CSS
#droppable { width: 250px; height: 500px; padding: 0.5em; float: left; margin: 10px; background: #ddd; color:#000; }
#draggable { width: 250px; height: 500px; padding: 0.5em; float: left; margin: 10px; background: #999; color:#000; }
.fade { opacity: 0.3; }
ul#droppable { list-style-type: none; }
#droppable h5 { background: #08f; color: #fff; margin: 5px 0; padding: 3px; font-size: 14px; }
#droppable .item, .item ul li { padding: 0 5px; background: #ccc; }
HTML
<ul id="droppable">
<li class="item selected">
<h5>Header #1</h5>
<ul>
<li>Item #1.1</li>
<li>Item #1.2</li>
</ul>
</li>
<li class="item">
<h5>Header #2</h5>
<ul>
<li>Item #2.1</li>
<li>Item #2.2</li>
</ul>
</li>
</ul>
Script
$(document).ready(function(){
// make accordion
var item = $('#droppable li.item');
// dropover event is for droppable
item.bind('mouseover dropover', function(){
item.removeClass('selected');
$(this).addClass('selected').find('ul').slideDown(300);
item.not('.selected').find('ul').slideUp(300);
}).not('.selected').find('ul').hide();
// set up droppable
item.droppable({
drop: function(e,ui) {
ui.draggable.appendTo($(this).find('ul'));
ui.helper.remove();
}
});
// set up draggable
$('#draggable li').draggable({
helper : 'clone',
revert : true,
start: function(e,ui){
$(this).addClass('fade');
ui.helper.css('background','#ddd');
},
stop: function(e,ui){
$(this).removeClass('fade');
ui.helper.css('background','transparent');
}
});
});
Абсолютно эпос. Демонстрация выглядит великолепно - я посмотрю, смогу ли я помочь в этом! Спасибо! – awshepard