3

これが私のコードです。いくつかのクラスを追加し、その機能の一部を削除しました。CSS はデザインをうまく表現していますが、この関数に追加したクラスを使用したい場合、jQuery はそれを取得しません。'on'これらにライブまたは関数を使用するにはどうすればよいですか? droppableこれらのクラスにアクセスして関数で再度使用するにはどうすればよいですか?

$( ".droppable" ).droppable({
    drop: function( event, ui ) {
        $(this).removeClass('droppable');
        $(this).removeClass('ui-droppable');

        var dragIMG = '<img class="dragBox ui-draggable" data-type="'+img+'" src="img/'+img+'.jpg" alt="" style="position: relative;"/>';
        $(this).append(dragIMG);
        $('#box'+box).empty();
        $('#box'+box).addClass('droppable');
        $('#box'+box).addClass('ui-droppable');
    }
});
4

2 に答える 2

4

私の知る限り、イベント ハンドラーを委任できるのと同じ方法でプラグインを委任することはできません。セレクターは、実行時に一致する要素を選択し、プラグイン コードを実行して、それらの要素に必要な初期化を行います。後でセレクターに一致する新しい要素には、その初期化コードが呼び出されません。

プラグイン関数を再度呼び出す必要があります。このようなものが動作するはずです:

var droppableOptions = {
    drop: function (event, ui) {
        $(this).removeClass('droppable');
        $(this).removeClass('ui-droppable');

        var dragIMG = '<img class="dragBox ui-draggable" data-type="' + img + '" src="img/' + img + '.jpg" alt="" style="position: relative;"/>';
        $(this).append(dragIMG);
        $('#box' + box).empty().addClass('droppable').addClass('ui-droppable').droppable(droppableOptions);
    }
}

$('.droppable').droppable(droppableOptions);
于 2013-05-22T13:53:56.740 に答える