bra*_*ahn 49 jquery jquery-ui jquery-ui-sortable
在http://jqueryui.com/demos/sortable/#placeholder中给出的示例中,占位符是拖动任何项目时显示的橙色框.
可以使用placeholder
选项调整此元素- 但它只允许您修改元素的类,如下所述:http://jqueryui.com/demos/sortable/#options
我想更多地定制这个元素,例如通过以与向placeholder
选项提供函数相同的方式向helper
选项提供函数.
我需要改变什么(例如在sortable.js中)才能做到这一点?
Alc*_*nja 90
查看ui.sortable.js(1.7.2)的源代码,您可以placeholder
使用element
函数和update
函数作弊并设置为对象.该element
函数用于返回占位符dom对象,该update
函数允许您执行更正其大小的操作(_createPlaceholder
如果要查看默认实现的作用,可以查看sortable中的函数).
因此,例如,下面将创建一个列表项,其中包含单词test inside作为占位符(请注意,它返回实际的dom对象([0]
)而不是jQuery对象本身):
$("#sortable").sortable({
placeholder: {
element: function(currentItem) {
return $("<li><em>test</em></li>")[0];
},
update: function(container, p) {
return;
}
}
});
Run Code Online (Sandbox Code Playgroud)
如果我正确地读取源代码,该element
函数应该传递给当前项(jQuery对象)并且this
应该指向sortable
它自己(即$("#sortable")
在这个例子中).在update
你传递了"容器",它是包含所有选项,元素等及其placeholder
自身的对象.
请注意,这是一个未记录的黑客,所以它显然是不受支持的,并且可能会随着jQuery UI的下一个版本而改变...但它仍然可能对您有用,因为您ui.sortable.js
无论如何都在谈论直接编辑.
希望有所帮助.
bra*_*ahn 53
我找到了一种更具攻击性的方法:可以使用该start
选项来修改占位符元素,例如如下所示
$("#sortable").sortable({
start: function (e, ui) {
// modify ui.placeholder however you like
ui.placeholder.html("I'm modifying the placeholder element!");
}
});
Run Code Online (Sandbox Code Playgroud)