我试图让.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只是空的所以我无法看到它。如果有人知道为什么这不起作用,我真的很感激。谢谢。
答案 0 :(得分:0)
我已经找到了部分问题。一个问题是,为了更改帮助器,您必须将函数作为参数传递,而不是jQuery对象。另一个问题是,当更改帮助程序时,视图不会更新,因此如果您再次拖动.draggable
对象,则只会看到更改。这为我澄清了一些事情,但我仍然需要弄清楚如何在原始拖动过程中出现新助手。任何建议表示赞赏。