起源:
<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 を新しい位置にドラッグした場合 (2 番目の li になります)、2 番目の li が my の代わりにその場所に配置された場合、この要素を 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;
}
}
});
まあ...まだ解決策が必要ですが、うまくいかないようです。