問題は、ドロップ可能な許容オプションによって引き起こされているようです。デフォルトは ですintersect
。
APIドキュメントに記載されているように
intersect
: ドラッグ可能はドロップ可能と両方向で少なくとも 50% オーバーラップします。
あなた<li>
の s がまだデフォルトのスタイルにあることを見て、それらは親の利用可能な幅を埋めます<ul>
.テーブルの右側にそれらをドラッグしようとすると、 の 50% 以上が<li>
ドロップ可能の外にぶら下がっています.
にいくつかの境界線を追加すると<li>
、#myListOfData
何が起こっているのかをよりよく把握できます。
図1
問題が何であるかがわかったので、解決策に進みます。
ペッパーが言ったように、ドロップ可能の許容オプションをポインターに変更するだけです:
実施例1
$('#table').droppable({
tolerance: 'pointer', //Important Bit
over: function (event, ui) {
$('#tableOverlay').width($(this).width());
$('#tableOverlay').height($(this).height());
$('#tableOverlay').show();
$("#tableOverlay").position({
of: this,
at: "top left",
my: "top left"
});
},
out: function (event, ui) {
$('#tableOverlay').hide();
},
drop: function (event, ui) {
$('#tableOverlay').hide();
}
});
tolerance option: 'touch'
または、次のように使用できます。
実施例2
$('#table').droppable({
tolerance: 'touch', //Important Bit
over: function (event, ui) {
$('#tableOverlay').width($(this).width());
$('#tableOverlay').height($(this).height());
$('#tableOverlay').show();
$("#tableOverlay").position({
of: this,
at: "top left",
my: "top left"
});
},
out: function (event, ui) {
$('#tableOverlay').hide();
},
drop: function (event, ui) {
$('#tableOverlay').hide();
}
});
<li>
または、次のように s の幅を指定できます。
実施例3
#myListOfData li {
width: 100px;
}
または、許容範囲オプションを変更したり、幅を指定したくない場合は、
display: table;
次のように使用できます。
実施例4
#myListOfData li {
display: table;
}