3

我有一个无序列表中的列表项,当双击时,可以通过所见即所得的编辑器进行编辑。

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

我的目标是防止在编辑列表项时对其进行排序 - 也就是一旦交换了表单元素代替了内容。

不幸的是,我的项目选择器不起作用。sortable 是否能够处理这样的复杂选择器?如果没有,是否还有其他巧妙的方法可以禁用某些项目的可排序性,也许是回调函数?

我更愿意依赖这个可排序的选项,因为所见即所得插件与 jEditable 深度嵌套,据我所知,它不会打开任何事件让我挂钩。

使用 jQuery 1.4.2 和 jQuery UI 1.8.1

4

1 回答 1

3

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

您应该能够return falsefrom sortstartif ui.itemcontains a <form>,但这似乎现在不起作用;相反,您可以使用它,它可以:

$('ul').sortable({
  items: '> li',
  cancel: 'li:has(form)'
});
于 2010-05-27T04:17:59.167 回答