Jquery 如何在可拖动对象上使用 .live
Posted
技术标签:
【中文标题】Jquery 如何在可拖动对象上使用 .live【英文标题】:Jquery How to use .live on draggable 【发布时间】:2013-04-01 07:15:17 【问题描述】:我正在使用 jquery ui 中的可拖动方法。如何在可拖动对象上应用 live()。
$("#image").draggable( containment: [10, 150, 0, 0], scroll: false);
我试过的是这个
$("#image").live("draggable", function ()
.draggable( containment: [10, 150, 0, 0], scroll: false);
但这不起作用。
谢谢
【问题讨论】:
你的意思是.on()
。 .live()
has been removed as of jQuery 1.9
查看此示例讨论***.com/a/3349395/1193035
仅供参考,.live() 已弃用。改为查看 .on() (api.jquery.com/on)
如果您尝试将插件应用于动态元素,它将无法正常工作。必须有一个事件。
如果您自己添加元素,则应在添加后立即将其转换为可拖动的。
【参考方案1】:
首先作为仅供参考,live 已被弃用,您应该使用 .on() 作为上述状态的 cmets。
其次,您将无法在任一场景中执行您需要执行的操作,因为这些事件未包含在 on() 中。因此,我处理它的方法是在函数中执行您的事件附件:
function doDraggable()
$(".draggable").draggable( containment: [0, finalHeight, 0, 0], scroll: false);
然后在文档准备好以及 ajax 完成时初始化它:
$(document).ready(function ()
doDraggable();
);
$(document).ajaxComplete(function ()
doDraggable();
);
您可以比使用 ajaxComplete 事件的文档选择器更具体,这样它就不会为 每个 ajax 事件触发,但你明白我的意思...
【讨论】:
如果他在没有 AJAX 的情况下添加元素怎么办? 那么 document.ready 应该覆盖它。或者你的意思是在 jQuery 之外执行 ajax?如果是这样,他将需要将回调附加到那些特定的 ajax 调用以重新初始化附件。 我的意思是向 DOM 添加元素以响应用户事件,例如单击按钮,只需通过$('body').append('div')
或类似的方式。
我明白了。只需在更新 DOM 后调用该函数就可以了,对吧?
如果这令人困惑,我建议您回到 jQuery 的基础知识,因为这里介绍的概念相对简单。网上有成千上万的教程。您可能希望从这里开始:docs.jquery.com/Tutorials 专注于事件附件和 DOM 操作。这也很有用:jquery4u.com/jquery-functions/on-vs-live-review以上是关于Jquery 如何在可拖动对象上使用 .live的主要内容,如果未能解决你的问题,请参考以下文章