Jquery on drop删除助手

时间:2018-02-21 15:48:00

标签: jquery jquery-ui jquery-ui-draggable jquery-ui-droppable

我使用jquery draggable和jquery droppable,在draggable函数中我使用helper clone,当我删除拖动的元素时它应该删除克隆并显示另一个div,在droppable的地方我有一个内部的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

3 个答案:

答案 0 :(得分:1)

我认为你希望id获取元素,id就像user.fullname,你在下面的代码中犯了错误:

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

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

所以你需要改变你的代码:

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

答案 1 :(得分:1)

您的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

答案 2 :(得分:0)

问题是我无法正确获取ID,所以这就是我现在得到它并且工作正常,

var user = ui.helper.context.id;