0

これが「doIt」と呼ばれる私のカスタム関数です。これは、誰かがクラスまたはIDで.doIt()を呼び出すことを可能にし、この場合、背景色を赤にして、要素をドラッグ可能にします。(これは私の最初の試みですので、よろしくお願いします)。

(function($) {
   $.fn.doIt = function(customOptions) {
      var options = $.extend({}, $.fn.doIt.defaultOptions, customOptions);
      return this.each(function() {
         var $this = $(this); 
         $this.on('click', function(e){
            e.preventDefault();
            $this.css("background-color", options.color);
            $this.draggable();
         });
      });
   };
   $.fn.doIt.defaultOptions = {
    color: "#000"   
   };               
})(jQuery);

私の関数は要素をドラッグ可能にするので、たとえば「stop」のようにドラッグ可能に関連付けられたイベントの一部を使用したいので、ドラッグが停止したときに、ユーザーがのコールバックで同じイベント/UI情報にアクセスできるようにします止まる。

ただし、関数からドラッグ可能な停止イベントをどのように操作できますか?

私が期待しているのは、次のようなものです。

$("div#test").doIt({
    color: "#ffeeaa",
    stop: function(e, ui){

      //interact with draggable event/ui here.  
      //So 'e' and 'ui' would return me what the 'stop' event from draggable would normall return.

    }
});

これは可能ですか、それとも間違った木を吠えていますか?

4

1 に答える 1

1

オプションをjQueryに渡す必要があります。明らかに、jQueryが使用する以上のオプションを定義しているので、jQueryが気にしないオプションを除外したいと思うかもしれませんが、そうする必要はないと確信しています。jQueryは、使用しないプロパティを無視します。

つまり、あなたは具体的にstopイベントに参加しようとしています。これを行うには、次の行を変更します。

$this.draggable();

これに:

$this.draggable({
    stop: customOptions.stop   // Get the callback defined in custom options
});

カスタムオプションとjQueryが定義するオプションの間に名前の衝突がない場合は、おそらく次のようにすることができます。

$this.draggable(customOptions);

ユーザーがドラッグ可能な要素のドラッグを停止すると、jQueryは関数を呼び出します(eventおよびパラメーターを関数に渡します)。ui

于 2012-06-25T16:34:59.867 に答える