0

create イベント内から無効なオプションを参照するにはどうすればよいですか?

$(this)以下のコードは機能しますが、 を参照するのではなく、"event" および "ui" パラメータを参照することで、少しすっきりと短くしたいと思います。これらのパラメーターを理解するための知識、または操作方法を知るための知識が不足しています。

$(".myDroppables").droppable({
    create: function (event, ui) {
        //If class is full then set option disabled to true.
        if ($(this).hasClass('full'))
            $(this).droppable("option", "disabled", true);
    }
});

次のようになると思います。

$(".myDroppables").droppable({
    create: function (event, ui) {
        if ($(this).hasClass('full'))
            this.disabled = true;
    }
});

どうすればいいのですか?

4

1 に答える 1

1

コールバック引数は、ドロップ可能なウィジェットの概要に記載されています。

すべてのコールバックは 2 つの引数を受け取ります: 元のブラウザ イベントと準備されたuiオブジェクト:

  • ui.draggable- 現在のドラッグ可能な要素、jQuery オブジェクト。
  • ui.helper- 現在のドラッグ可能なヘルパー、jQuery オブジェクト。
  • ui.position- ドラッグ可能なヘルパーの現在位置{ top: , left: }
  • ui.offset- ドラッグ可能なヘルパーの現在の絶対位置{ top: , left: }

そうは言っても、 dropcreateコールバックにui渡される引数は、これらのプロパティ( fiddle )を公開しません。これはおそらく、ウィジェットのライフサイクルが早すぎて意味を持たないためです。

あなたの特定のケースでは、無効thisなオプションを適用するために多かれ少なかれ使用を余儀なくされています。ただし、パフォーマンスをわずかに向上させるために、の戻り値をキャッシュできます。$(this)

$(".myDroppables").droppable({
    create: function(event, ui) {
        var $this = $(this);
        // If class is full then set option disabled to true.
        if ($this.hasClass("full")) {
            $this.droppable("option", "disabled", true);
        }
    }
});
于 2011-08-14T14:56:41.160 に答える