11

<div>イベントがあり、ドラッグ用のclickイベントがないドラッグ可能なものがありますが、ドラッグした後、<div>クリック イベントが適用され<div>ます。

ドラッグ後のクリックイベントを防ぐにはどうすればよいですか?

$(function(){
    $('div').bind('click', function(){
        $(this).toggleClass('orange');
    });

    $('div').draggable();
});

http://jsfiddle.net/prince4prodigy/aG72R/

4

6 に答える 6

26

最初にドラッグ可能なイベントをアタッチし、次にクリック イベントをアタッチします。

$(function(){
    $('div').draggable();
    $('div').click(function(){
        $(this).toggleClass('orange');
    });
});

ここで試してみてください: http://jsfiddle.net/aG72R/55/

于 2013-08-03T11:09:25.953 に答える
5

dataとで解決しましたsetTimeout。ヘルパークラスよりも良いかもしれません。

<div id="dragbox"></div>

$(function(){
    $('#dragbox').bind('click', function(){
        if($(this).data('dragging')) return;
        $(this).toggleClass('orange');
    });

    $('#dragbox').draggable({
        start: function(event, ui){
            $(this).data('dragging', true);
        },
        stop: function(event, ui){
            setTimeout(function(){
                $(event.target).data('dragging', false);
            }, 1);
        }
    });
});

フィドルを確認してください。

于 2013-08-03T11:16:30.723 に答える
2

これはうまくいくはずです:

$(function(){

    $('div').draggable({
    start: function(event, ui) {
        $(this).addClass('noclick');
    }
});

$('div').click(function(event) {
    if ($(this).hasClass('noclick')) {
        $(this).removeClass('noclick');
    }
    else {
        $(this).toggleClass('orange');
    }
});
});

デモ

于 2013-08-03T11:07:28.003 に答える
0

ドラッグ可能でjQuery UIのui-draggable-draggingクラスを確認するだけです。そこにある場合は、クリック イベントを続行しないでください。このクラスの設定と削除は jQuery UI が処理するため、ユーザーが行う必要はありません。:)

コード:

$(function(){
    $('div').bind('click', function(){
        if( $(this).hasClass('ui-draggable-dragging') ) { return false; }
        $(this).toggleClass('orange');
    });

    $('div').draggable();
});
于 2015-12-03T22:33:57.277 に答える