2010-05-27 51 views
3

我有一个无序列表中的列表项,当双击时,可以通过wysiwyg编辑器进行编辑。jQuery UI的Sortable可以处理items选项的复杂选择器吗?

$('ul.mtm_section').sortable({ 
    disabled: true, 
    distance: 10, 
    items: '> li:not(:has(form))' 
}); 

我的目标是防止当它被编辑进行排序列表项 - 又名一旦表单元素已经到位的内容被交换。

不幸的是我的项目选择器不工作。排序能够处理这些复杂的选择器吗?如果没有,是否有其他聪明的方法来禁用某些项目可排序,也许是一个回调函数?

我宁愿依赖这种排序选项,因为wysiwyg插件与jEditable深深嵌套,并且据我所知不会打开任何事件供我插入。

使用jQuery 1.4.2和jQuery UI 1.8.1

回答

3

jQuery用户界面可排序接受任何选择,但选择器可用于选择哪些项目是在排序时创建排序而不是当拖动开始。如果您更改了DOM,它仍然会记住创建排序时哪些项目可排序。

如果ui.item包含<form>,您应该能够从sortstartreturn false,但这似乎不工作;相反,你可以使用这个,它可以:

$('ul').sortable({ 
    items: '> li', 
    cancel: 'li:has(form)' 
}); 
+0

谢谢!我知道取消,但当我尝试时,我的代码中一定有一个错误。这对我有用。 作为一个便笺,我想知道是否还有其他可排序的实例会受益于强制排序使用“实时”jquery事件挂钩的选项,并且有一个选项,如 liveItemsSelector:true – jverdi 2010-05-28 14:29:12