我已将此示例用于 Jquery Live Dragable:
但是想将它转换为使用 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));
这是对livedraggable的调用:
$(".item").liveDraggable({
revert: true
});
我使用它是因为我有许多通过 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
});
});