【问题标题】:Jquery How to use .live on draggableJquery 如何在可拖动对象上使用 .live
【发布时间】: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});

但这不起作用。

谢谢

【问题讨论】:

标签: jquery


【解决方案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
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多