Javascript TypeError:$source.offset不是函数

Javascript TypeError:$source.offset不是函数,javascript,jquery,function,jquery-ui-draggable,jquery-ui-droppable,Javascript,Jquery,Function,Jquery Ui Draggable,Jquery Ui Droppable,我有一个树结构,可以将元素拖放到另一个元素中。我的目标是将树中的元素或节点拖放到外部元素时,我希望从树的元素到外部位置绘制一条线 我有单独的代码用于拖放。我试图将代码集成到我的树结构中,并得到了这个错误。我确实看到过类似的错误,但无法确切了解错误的具体内容。下面是给出错误的代码 end: function(item, hover, placeholder, helper) { if (placeholder.parent().length) { var tree = $('#tr

我有一个树结构,可以将元素拖放到另一个元素中。我的目标是将树中的元素或节点拖放到外部元素时,我希望从树的元素到外部位置绘制一条线

我有单独的代码用于拖放。我试图将代码集成到我的树结构中,并得到了这个错误。我确实看到过类似的错误,但无法确切了解错误的具体内容。下面是给出错误的代码

end: function(item, hover, placeholder, helper) {
    if (placeholder.parent().length) {
    var tree = $('#tree1').aciTree('api');
    if (tree.isItem(item)) {
        var id = tree.getId(item);
        var label = tree.getLabel(item);
        if (this._instance.jQuery.hasClass('any')) {
            this._instance.jQuery.find('li:not(.aciSortablePlaceholder)').remove();
        }
        var item = $('<li id="item-' + id + '">' + label + '</li>');
        var sourceId = id;
        var destinationId = sourceId;
        drawLine(sourceId, destinationId);
        //This is how the function is called
        placeholder.after(item).detach();
     } 
        else {
            placeholder.detach();
     }
}
helper.detach();
}});

function drawLine(eTarget, eSource) {
    setTimeout(function () {
    var $source = eSource;
    var $target = eTarget;
    var originX = $source.offset().left + $source.width() + 20 + 4;
    // In the $source.offset() I am getting the error.
    var originY = $source.offset().top + (($source.height() + 20 + 4) / 2);

    var endingX = $target.offset().left;
    var endingY = $target.offset().top + (($target.height() + 20 + 4) / 2);

    var space = 20;
    var color = "black";

    var a = "M" + originX + " " + originY + " L" + (originX + space) + " " + originY; // beginning
    var b = "M" + (originX + space) + " " + originY + " L" + (endingX - space) + " " + endingY; // diagonal line
    var c = "M" + (endingX - space) + " " + endingY + " L" + endingX + " " + endingY; // ending
    var all = a + " " + b + " " + c;

    console.log("New Line ----------------------------");
    console.log("originX: " + originX + " | originY: " + originY + " | endingX: " + endingX + " | endingY: " + endingY + " | space: " + space + " | color: " + color );            
    console.log(all); 

    myLines[myLines.length] = svg
    .path(all)
    .attr({
         "stroke": color,
         "stroke-width": 1,
         "stroke-dasharray": "-"
     });
 }, 1000);
end:function(项、悬停、占位符、助手){
if(占位符.parent().length){
变量树=$('#tree1').aciTree('api');
if(目录树isItem(项目)){
var id=tree.getId(项目);
var label=tree.getLabel(项目);
if(this.\u instance.jQuery.hasClass('any')){
此.u instance.jQuery.find('li:not(.aciSortablePlaceholder')).remove();
}
var item=$(“
  • “+label+”
  • ”); var sourceId=id; var destinationId=sourceId; 抽绳(源ID、目的ID); //这就是函数的调用方式 占位符.after(项).detach(); } 否则{ 占位符.detach(); } } helper.detach(); }}); 功能抽绳(eTarget、eSource){ setTimeout(函数(){ var$source=eSource; var$target=eTarget; var originX=$source.offset().left+$source.width()+20+4; //在$source.offset()中,我得到了错误。 var originY=$source.offset().top+($source.height()+20+4)/2); var endingX=$target.offset().left; var endingY=$target.offset().top+($target.height()+20+4)/2); var空间=20; var color=“黑色”; var a=“M”+originX+“”+originY+“L”+(originX+空格)+“”+originY;//开始 var b=“M”+(originX+空格)+“”+originY+“L”+(endingX-空格)+“”+endingY;//对角线 var c=“M”+(endingX-space)+“”+endingY+“L”+endingX+“”+endingY;//结束 var all=a+“”+b+“”+c; console.log(“新行------------------------------------------”; console.log(“originX:+originX+”| originY:+originY+”| endingX:+endingX+| endingY:+endingY+”|空格:+space+|颜色:+color”); 控制台日志(全部); myLines[myLines.length]=svg .路径(全部) 艾特先生({ “笔触”:颜色, “笔划宽度”:1, “笔划数组”:“-” }); }, 1000);

    PS:我使用的是firefox。ETRAGET和eSource会按照提供的方式获取值。

    var$source=eSource;
    那么什么是
    eSource
    ,我猜不是jQuery对象?!如果它是DOM节点,请将其包装在jQuery:
    var$source=$(eSource);
    您需要显示调用代码。如果参数不是jQuery对象,它将失败。好的,我会编辑问题并显示如何调用它。我一周前刚开始看到jQuery,所以它有点让人困惑(嘿@Vinnie,你应该在上复制你的问题,用链接更新问题,并在评论中报告回来。嘿@lolmaus AndreyMikhaylov我不确定我能不能把它放到jsbin中。我有10个css文件,支持10多个javascript自定义扩展,只是为了让页面正常工作。