Jquery on drop remove helper

Posted

技术标签:

【中文标题】Jquery on drop remove helper【英文标题】: 【发布时间】:2018-08-01 06:39:26 【问题描述】:

我使用 jquery draggable 和 jquery droppable ,在可拖动函数中我使用辅助克隆,当我放下拖动的元素时,它应该删除克隆并显示另一个 div,在可放置的地方我有一个不可见的 div放下它应该是可见的,这是我的代码

$('#external-events .fc-event').each(function() 
                        // store data so the calendar knows to render an event upon drop

                        // make the event draggable using jQuery UI
                        $(this).draggable(
                            helper:'clone',
                            zIndex: 999999,
                            containment: 'window',
                            appendTo:'body',
                            scroll: false,
                            revert: true,      // will cause the event to go back to its
                            revertDuration: 0,  //  original position after the drag
                            // start: function()
                            //     $(this).fadeOut();
                            //
                            // ,
                            // stop: function()
                            //     $(this).fadeIn();
                            // 
                        );

                    );

这是我的可放置函数

 $(to).droppable(

                drop: function ( event, ui )
                 $("ui.draggable").clone().hide();
                    var avatar = '';
                    var user = ui.helper[0].id;
                    console.log("user", user);
                    var fullname = $('#'+user+' .fullName').text();
                    var hiddenInput = $('#'+user+' .userId').val();
                    console.log("ID: ", hiddenInput);
                    console.log(fullname);
                    $('#uname_here').text(fullname);
                    var userId = '#' + ui.helper[0].id + ' .userId';
                    $('.whenDropOwnerHideThis').hide();
                    $("div#dropedUser").show();
                    $('#dropUserForHeadOfProjectInput').val(hiddenInput);
                    $("#dropUserForHeadOfProject").removeClass('error_empty');
                    $("#drop_head_project").removeClass('error_empty');

                
            );

这样它不起作用,它显示错误

Uncaught Error: Syntax error, unrecognized expression: # .fullName

【问题讨论】:

您可以添加一些 html 片段来澄清您的问题吗? 【参考方案1】:

我认为你想通过id 获取元素,它是id 就像user.fullname 并且你在下面的代码中犯了一个错误:

var fullname = $('#'+user+' .fullName').text();

要将任何元字符(例如 !"#$%&'()*+,./:;<=>?@[\]^``|~ )用作名称的文字部分,必须使用两个反斜杠 \\ 对其进行转义 .例如,带有id="foo.bar" 的元素可以使用选择器$("#foo\\.bar")。 (More information)

所以你需要像这样改变你的代码:

var fullname = $('#'+user+'\\.fullName').text();

【讨论】:

【参考方案2】:

您的 HTML 中必须有一个唯一的 id,如果没有,那么您可以使用 data-* 属性来选择任何元素。

同样从您的代码中,如果您的元素的 id 具有类 fullname 之类的类,请尝试从选择器中删除空格,

var fullname = $('#'+user+'.fullName').text();
               // --------^^ remove the space from here

userId类做同样的事情,

var hiddenInput = $('#'+user+'.userId').val();

根据您的错误消息,我认为您没有从声明中获得user-id

var user = ui.helper[0].id;// make sure it should not blank &  
                           // an element having this id exists in DOM

【讨论】:

只有当我添加助手克隆时它才会显示该错误,当我删除助手克隆时它工作正常吗?我会试试这些东西,让你知道【参考方案3】:

问题是我无法正确获取 id,所以这就是我现在获取它的方式,它工作正常,

var user = ui.helper.context.id;

【讨论】:

以上是关于Jquery on drop remove helper的主要内容,如果未能解决你的问题,请参考以下文章

jQuery UI Drag and Drop/Sortable Drop on empty,在 Chrome

jquery on drop 函数不起作用

jQuery Drag&Drop:拖动一个封闭元素

使用 jQuery 删除拖动的元素并重置光标

mongodb中drop和remove的区别

jquery动态添加的事件失效解决方法:on()