无法让jQuery UI拖动助手进行更改

时间:2014-10-30 21:14:25

标签: jquery jquery-ui coffeescript draggable helper

我试图让.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只是空的所以我无法看到它。如果有人知道为什么这不起作用,我真的很感激。谢谢。

1 个答案:

答案 0 :(得分:0)

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