jQuery UI可排序(';取消';)-this.helper为空
我试图在双击可排序元素时禁用该元素的排序。当我尝试禁用它时,即使没有条件,也会出现错误“this.helper为null”jQuery UI可排序(';取消';)-this.helper为空,jquery,jquery-ui,jquery-ui-sortable,Jquery,Jquery Ui,Jquery Ui Sortable,我试图在双击可排序元素时禁用该元素的排序。当我尝试禁用它时,即使没有条件,也会出现错误“this.helper为null” $('.roundedBox:first', division).sortable({ start: function( event, ui ) { if( true === true ) { $(this).sortable('cancel'); } $(this).parent().dat
$('.roundedBox:first', division).sortable({
start: function( event, ui ) {
if( true === true ) {
$(this).sortable('cancel');
}
$(this).parent().data( 'sorting', true );
},
stop: function() {
$(this).parent().data( 'sorting', false );
},
items: '.department',
update: function() {},
placeholder: 'department-placeholder'
})
有什么办法可以做到这一点吗?我不需要这种方法。从字面上说,任何阻止它的东西都会起作用
问题是,排序从一次单击开始,但我有另一个绑定到双击的操作。如果双击它,我不希望它被拖动
编辑 在Russ C引发的进一步调查(谢谢)后,我发现问题不在可排序表本身,而是与其他两个插件结合在一起: 表() jQuery上下文菜单() 后者才是问题的真正原因。因为jEditable
h3
标记位于可排序的div
中,而div又位于一个具有jQuery上下文菜单的分区中,我相信它正在做一些事情来阻止传播(没有最后一个插件,一切正常)
要重现此问题,需要执行以下操作:
HTML
您可以在此处看到一个测试示例(稍后将删除链接):
如果从jQuery代码中删除此部分,则所有操作都会正常进行:
// Add context menu to menu icon
$('.division').contextMenu({
menu: 'uDivisionMenu'
}, function(){} );
现在我将继续寻找一个问题
更新 我已经解决了这个问题。如果将来有人遇到这个问题,我将contextMenu插件更改为跳过检查目标是否在“.department”类中。在“mouseup”函数之后,添加检查事件目标的检查,如下所示:
$(this).mouseup( function(e) {
if( !$(e.target).hasClass('department') && !$(e.target).parent().hasClass('department') ) {
您是否可以尝试将延迟:500添加到可排序参数列表中,也许该延迟可能会使双击气泡正确
类似地,可以使用distance:30,这将告诉sortable在拖动30像素或更多像素之前不要开始工作。这可用于确保“单击”事件正常工作。双击属性将显示一个可编辑的文本字段。我尝试了延迟:500和距离:30,如果鼠标位于以下区域,它们仍然会被触发:\Ahh ok;您是否可以发布一些HTML和双击事件?我想尝试在本地复制这个。嗯,有点困难,我会看看我能做些什么,这会导致一个重大发现——你可以看到我上面的编辑。我很快就会接受你的答案——只是想确保我能真正解决这个问题。附加信息:如果我能在可排序开始之前访问分区,我可能会禁用contextMenu,这样就不会有问题了,我只是不知道有什么方法可以做到这一点。有没有办法访问被单击的元素?我只是在处理这个问题,我通过跳过mousedown处理程序中的evt.stopPropagation来解决这个问题。
// Add context menu to menu icon
$('.division').contextMenu({
menu: 'uDivisionMenu'
}, function(){} );
$(this).mouseup( function(e) {
if( !$(e.target).hasClass('department') && !$(e.target).parent().hasClass('department') ) {