jQuery UI のドラッグ可能なプラグインを使用して、div をテーブルにドラッグしています。
私の問題は、テーブル セルにドラッグすると、ドロップ イベントがトリガーされないことがあるということです。2 つのセル (垂直または水平) を分離する 1 つのピクセルに正確にドロップすると発生するようです。境界線を 0 に設定しようとしましたが、まだ問題があります。
この単純化された例を確認してください。
jQuery UI のドラッグ可能なプラグインを使用して、div をテーブルにドラッグしています。
私の問題は、テーブル セルにドラッグすると、ドロップ イベントがトリガーされないことがあるということです。2 つのセル (垂直または水平) を分離する 1 つのピクセルに正確にドロップすると発生するようです。境界線を 0 に設定しようとしましたが、まだ問題があります。
この単純化された例を確認してください。
動作デモ http://jsfiddle.net/YNUzx/1/ または http://jsfiddle.net/YNUzx/2/
Tolerance
ドラッグ機能を向上させるには、オプションをに設定する必要がありtouch
ます:)
または許容値として使用pointer
: マウス ポインターがドロップ可能オブジェクトに重なる
よく読んでください:http://jqueryui.com/demos/droppable/#option-tolerance
動作: "1" と言ってテーブル セルにドラッグすると、タッチするとテーブル内でドロップがトリガーされます。残りはデモで確認できます。
お役に立てれば、
次の行はトリックを行います:tolerance: "touch",
コード
$(".dragbox").draggable({
revert: true
});
$("table tr td").droppable({
accept: ".dragbox",
tolerance: "touch",
drop: function(event, ui) {
$(this).css({
'background-color': 'white'
}).html(ui.draggable.find('span').text());
},
over: function(event, ui) {
$(this).css({
'background-color': '#DCFFDB'
});
},
out: function(event, ui) {
$(this).css({
'background-color': 'white'
});
}
});
私が提案するのは、「タッチ」許容オプションを使用することですが、適切な機能に問題が発生しているため、ドラッグ可能オブジェクトのマージンを削除することです。代わりに、ドラッグ可能なものにラッパー div を使用し、その div にマージンを与えます。これはhttp://jsfiddle.net/YNUzx/3/に役立つかもしれません
また、適切な動作を確認するために、td の幅と高さを大きくすることをお勧めします。
編集:これを試してみてくださいhttp://jsfiddle.net/YNUzx/4/私は解決策を得たと思います
Tejasva Dhyani のコメントと Tats_innit とのチャットのおかげで、答えが見つかりました。
ドラッグ可能な div が 2 つのドロップ可能な要素 (セル) の間にあるときにドロップすると、jQuery は混乱します (当然のことながら)。
つまり、15px が 1 つのセルの上にあり、15px が別のセルの上にあるときにドロップすると、ドロップ イベントはトリガーされません。
私がしたことは、幅と高さを奇数に設定することだけでした。こちらの jsfiddle を参照してください。