1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

jquery.pep.jsでコールバックが受け取れない

Last updated at Posted at 2018-05-29

スムーズなドラッグ&ドロップを実現してくれる便利なjqueryプラグイン、
「Pep」を使っていて気がついたことがあったのでメモ。

このプラグインは指定した要素をドラック&ドロップなどのマウス操作に対応させ、
さらにキネティックに動かすことができるようになります。

ただし、問題点がひとつ。
指定した要素をJavacriptなどで制御したときにコールバックが受け取れない問題がありました。

たとえば、

    $(@el).pep({
      cssEaseDuration: 500
      rest: =>
        console.log 'rest!'

とすると、マウス操作した際は操作完了後に’rest!’とでてきますが、
下記のようにマウス操作以外のなんらかのタイミングでjavascriptなどで移動させるとコールバックが機能しません。


    $(@el).css({
      left: 100
      height: 100
    })

色々調べてみると、マウス操作などではanimateメソッドで動かしているが、
CSSメソッドで動作させるとCSS3のアニメーション機能で動かしていることがわかりました。

CSS3アニメーションの完了イベントはwebkitTransitionEndなので、
下記のようにイベントを監視します。

    $(@el).on(
      'webkitTransitionEnd'
      (e)=>
        console.log 'rest!'
    )

無事コンソールに'rest!'が表示されました。

ただ複数回コールバックが呼ばれてしまうので、
完了後に適宜offするなどしてください。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?