スムーズなドラッグ&ドロップを実現してくれる便利な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するなどしてください。