この例を Jquery Live Dragable に使用しました。
ライブ イベントを使用した jQuery ドラッグ アンド ドロップ
しかし、jquery 1.7で.onを使用するように変換したいのですが、あらゆる種類の順列を試してみました。
.live を使用して .livedragable メソッドを作成する作業コードは次のとおりです。
(function ($) {
$.fn.liveDraggable = function (opts) {
$(this).live("mousemove.liveDraggable", function() {
$this = $(this);
$this.draggable(opts);
$this.off('mousemove.liveDraggable'); // kill the mousemove
});
return $();
};
}(jQuery));
liveraggable の呼び出しは次のとおりです。
$(".item").liveDraggable({
revert: true
});
DB から ajax を介してロードされる多数のドラッグ可能オブジェクトがあるため、これを使用しています。
私は今試しました:
this.on("mousemove",".liveDraggable", function() {
しかし、うまくいきません。
更新 最後に Joel Purra の回答 (以下を参照) を介してこれに到達し、うまく機能します!!
(function ($) {
$.fn.liveDraggable = function (draggableItemSelector, opts) {
// Make the function chainable per good jQuery plugin design
return this.each(function(){
// Start the event listener for any contained draggableItemSelector items
$(this).on("mouseenter", draggableItemSelector, function() {
var $this = $(this);
// If the item is already draggable, don't continue
if($this.data("is-already-draggable") === true)
{
return;
}
// Make the item draggable
$this.draggable(opts);
// Save the fact that the item is now draggable
$this.data("is-already-draggable", true);
});
});
};
}(jQuery));
プラスセレクター
$(function() {
$("#my_div").liveDraggable(
".item",
{
revert: true
});
});