Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery UI可排序(';取消';)-this.helper为空_Jquery_Jquery Ui_Jquery Ui Sortable - Fatal编程技术网

jQuery UI可排序(';取消';)-this.helper为空

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

我试图在双击可排序元素时禁用该元素的排序。当我尝试禁用它时,即使没有条件,也会出现错误“this.helper为null”

$('.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') ) {