【问题标题】:Can't get jQuery UI drag helper to change无法让 jQuery UI 拖动助手更改
【发布时间】:2014-12-27 02:39:02
【问题描述】:

我试图让.draggable() 对象的助手根据它在屏幕上的位置进行更改。为此,我使用了帮助程序的 set 函数,其值是从单独的模板生成的 HTML。通过使用console.log() 语句来查看帮助程序是什么,我可以看到 HTML 已适当更改(至少我相当确定),但帮助程序本身并没有在屏幕上更改。在某些情况下,这是 Backbone.js 视图中的 CoffeeScript。这是我的代码:

$('#syllabus').droppable({
  scope: "components",
  over: (event, ui) ->
    $('#new_plaintext_button').draggable("option", "helper", $(JST["backbone/templates/components/box"]()))
  out: ->
    $('#new_plaintext_button').draggable("option", "helper", "clone")
})

为了澄清,帮助程序从克隆开始,当我将鼠标悬停在具有正确范围的对象上时,它应该从模板更改为新的 HTML 对象。当我离开范围时,它应该返回到克隆。这是帮助器在我更改之前和之后的 jQuery 对象:

[i.fa.fa-3x.fa-file-text-o.ui-draggable.ui-draggable-handle.ui-draggable-dragging, prevObject: jQuery.fn.jQuery.init[1], context: i#new_plaintext_button.fa.fa-3x.fa-file-text-o.ui-draggable.ui-draggable-handle, constructor: function, init: function, selector: ""…]
[div#component_box, prevObject: jQuery.fn.jQuery.init[1], context: document, constructor: function, init: function, selector: ""…]

作为最后一点,我已经在 CSS 中为这个新的 div 设置了可见的特性,所以我知道我的 div 不是空的,所以我看不到它。如果有人知道为什么这不起作用,我将不胜感激。谢谢。

【问题讨论】:

  • 那不是 jquery 对象。您分享的只是纯文本。
  • @TJ 你能再帮我点忙吗?我已将 HTML 放入 jQuery 选择器中,所以我不太确定它只是纯文本。如果是,我将如何使它成为一个 jQuery 对象?谢谢。
  • 你能分享一下重现你目前所拥有的东西所需的最少代码吗?或在线演示,例如jsfiddle
  • @TJ 给你:jsfiddle.net/peexa00m 我似乎很难在overout 函数中放置多行,因此我省略了打印语句 - 我仍然CoffeeScript 很新,这就是原因。但我确实尝试了打印,发现正在创建的对象与我在原始帖子中指出的相同。

标签: jquery jquery-ui coffeescript draggable helper


【解决方案1】:

我已经解决了部分问题。一个问题是,为了更改帮助程序,您必须传递一个函数作为参数,而不是一个 jQuery 对象。另一个问题是,当助手更改时,视图不会更新,因此只有在第二次拖动 .draggable 对象时才能看到更改。这为我澄清了一些事情,但我仍然需要弄清楚如何让新助手在原始拖动过程​​中出现。任何建议表示赞赏。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 2013-02-20
    • 1970-01-01
    • 1970-01-01
    • 2011-07-15
    • 1970-01-01
    相关资源
    最近更新 更多