私は同じ問題を抱えていて、複数のアプローチを試しましたが、どれもうまくいきませんでした。
解決策1
$('.item').click(function(e)
{
if ( $(this).is('.ui-draggable-dragging') ) return false;
});
私には何もしません。ドラッグが完了した後、アイテムがクリックされています。
ソリューション2(Tom de Boerによる)
$('.item').draggable(
{
stop: function(event, ui)
{
$( event.originalEvent.target).one('click', function(e){ e.stopImmediatePropagation(); } );
}
});
これは問題なく機能しますが、1つのケースで失敗します-フルスクリーンのオンクリックを行っていたとき:
var body = $('body')[0];
req = body.requestFullScreen || body.webkitRequestFullScreen || body.mozRequestFullScreen;
req.call(body);
ソリューション3(Sasha Yanovetsによる)
$('.item').draggable({
start: function(event, ui) {
ui.helper.bind("click.prevent",
function(event) { event.preventDefault(); });
},
stop: function(event, ui) {
setTimeout(function(){ui.helper.unbind("click.prevent");}, 300);
}
})
これは私にはうまくいきません。
解決策4-問題なく機能した唯一の方法
$('.item').draggable(
{
});
$('.item').click(function(e)
{
});
はい、それだけです-正しい順序でうまくいきます-最初にdraggable()をバインドし、次にclick()イベントをバインドする必要があります。click()イベントにフルスクリーンの切り替えコードを配置しても、ドラッグしてもフルスクリーンになりませんでした。私にぴったり!