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自定义扩展,只是为了让页面正常工作。