1

これは、Jquery ドラッグ アンド ドロップに投稿されたフォローアップの質問です - クリック イベント レジスタ オン ドロップ

私はjqueryのドラッグアンドドロップを使用しています。ドラッグ可能な要素には、左右にフロートされた 2 つのネストされた div が含まれています。左の div にはドラッグ可能なテキストが含まれ、右の div にはツールチップを切り替える小さな「情報」ボタンが含まれます。

ドロップ時に、ドラッグ可能なテキストを含む左のネストされた div をクリック可能にしたい。ドロップは次の関数によって処理されます。

function handleElementDrop( event, ui ) {
  var slotNumber = $(this).data( 'number' );
  var elementNumber = ui.draggable.data( 'number' );

  if ( slotNumber == elementNumber ) {



ui.draggable.css( 'cursor', 'pointer' );
ui.draggable.parent().find('.element_left').click(function(e) {  
        window.open(ui.draggable.attr('data-link'));
    });

ui.draggable.parent().find('.info').addClass('correct');
    ui.draggable.addClass( 'correct' );
    ui.draggable.draggable( 'disable' );
    $(this).droppable( 'disable' );
    ui.draggable.position( { of: $(this), my: 'left top', at: 'left top' } );
    ui.draggable.draggable( 'option', 'revert', false );
  } 
}

今ある場所:

ui.draggable.parent().find('.element_left').click(function(e) {  
        window.open(ui.draggable.attr('data-link'));
    });

クリック可能な左のネストされた div OK で動作しますが、最後の質問で投稿した問題は残っているようです。つまり、ドロップ時にクリック イベントが発生します。これは非常に散発的に発生します... http://jsfiddle.net/5wcaQ/にフィドルがあります

4

1 に答える 1

1

i.element_left要素ではなく、そのinfo中の要素です。

また、この動作は、別のクリック イベント ハンドラー内でクリック イベント ハンドラーを登録しているという事実に関連している可能性があります。イベント登録を に入れてみて、setTimout修正されるかどうかを確認してください

setTimeout(function(){
    ui.draggable.find('.element_left').click(function(e) { 
        window.open(ui.draggable.attr('data-link')); 
    });
});

デモ:フィドル

于 2013-05-08T04:26:26.307 に答える