来源:
<ul class="supercategory">
<li>
<div class="supcat">
<h4>
<a class="new" href="/header1.html">header 1</a>
</h4>
<ul class="category">
<li><a href="item1.html">Item 1</a></li>
<li><a href="item2.html">Item 2</a></li>
</ul>
</div>
</li>
<li style="" class="">
<div class="supcat">
<h4>
<a class="new" href="/header2.html">Header 2</a>
</h4>
<ul class="category">
<li><a href="item1.html">Item 1</a></li>
<li><a href="item2.html">Item 2</a></li>
</ul>
</div>
</li>
</ul>
<div id="test">
</div>
一点点CSS:
ul.supercategory { background: lightblue; }
.new{ background: yellow; }
和一个 jQuery UI 力量:
$('.supercategory').sortable({
cursor: 'move',
axis: 'y',
revert: true,
stop: function (event, ui) { }
});
我知道要获得当前拖动元素的对象,我只需要做以下事情:
stop: function(event, ui) { var obj = ui.item; }
但是如何获取放置元素的对象而不是拖动到新位置?
例如,如果我将第一个 li 拖动到新位置(它将是 2nd li),第二个 li 被放置在该位置而不是我的位置上,如何在 jQuery UI 中将该元素作为对象进行排序?
看我的小提琴:http: //jsfiddle.net/Stasonix/jCMuQ/1/
upd 1.首先是小提琴。http://jsfiddle.net/Stasonix/jCMuQ/5/
比代码:
var is_received = false;
$('.supercategory').sortable({
cursor: 'move',
axis: 'y',
revert: true,
receive: function(event, ui){ is_received = true; },
stop: function (event, ui) {
is_received = true;
},
deactivate: function(event, ui) {
if (is_received){
$('#test').text(ui.item.find('.new').attr('href'));
is_received=false;
}
}
});
嗯......仍然需要一个解决方案,它似乎不起作用。