我在ready()事件中加载了一些函数。这些基本上使列表可拖动,其他区域可放置/可排序。例如。您可以将克隆拖动到多个区域(div中的列表),并且在这些多个区域内,您可以对它们进行排序/重新排序(但仅限于每个区域内)。这非常有效。
我有一个按钮,可以为要放入的项目动态创建一个新区域,然后进行排序。它可以完美地创建新区域,但您不能将项目放入其中,或者甚至可以将它们排序。
我意识到这与我使用ready()事件在页面加载时使所有区域可以放置/可排序这一事实有关,并且实际上并没有动态地重新运行这些函数。
我尝试在按钮的单击功能中对这些元素使用'刷新'。例如
$(".field > li").draggable('refresh');
$(".dragrow1, .dragrow2").droppable('refresh');
$(".dragrow1, .dragrow2").sortable('refresh');
但这不起作用。如果我能提供帮助,我想避免以任何方式重复我的代码。有没有办法使这项工作?我认为如果有类似'live()'函数的东西你可以用'ready()',那么这可能是一个解决方案,但是没有......!
感谢。
答案 0 :(得分:7)
为什么不将初始化编码为自己的jQuery插件?然后你的初始化代码以及添加动态元素的代码就可以这样设置。
jQuery(function() {
jQuery.fn.myDroppableSetup = function myDroppableSetup() {
this.each(function() {
// your setup code here
});
return this;
};
jQuery.fn.myDraggableSetup = // ...
});
然后,您可以在动态添加内容时重复使用它:
$('div.newlyAddedDroppable').myDroppableSetup();