我知道我可以使用宽度或大小函数来获取它,但我想在创建可拖动对象的那一刻尝试它。
我这样做是因为我需要为元素赋予网格效果,并使其保持在可绘制区域内。
这类似于我尝试做的事情:
square = draw.rect(size, size).x(x).y(y).draggable(function(x, y){
var xend = x - x % size;
var yend = y - y % size;
if(xend < 0)
xend = 0;
if(yend < 0)
yend = 0;
if(xend > 1000)
xend = 1000 - width*;
return { x: xend, y: yend }
});
带有*的var是我想要的。
也很高兴知道如何允许svg.js元素与jquery交互,但我想这是另一个问题。
编辑嗯,现在实际上我需要访问该元素的其他属性,如果我不能从可拖动元素那样做,我想我应该寻找另一种方法来让它可以拖拽? :(请帮忙!
答案 0 :(得分:0)
解决方案是(如Nils所说),使用square.bbox函数,例如:
square = draw.rect(size, size).x(x).y(y).draggable(function(x, y){
var xend = x - x % size;
var yend = y - y % size;
if(xend < 0)
xend = 0;
if(yend < 0)
yend = 0;
if(xend > 1000)
xend = 1000 - square.bbox().width;
return { x: xend, y: yend }
});
此外,如果您想稍后访问该元素,可以使用square.attr('id','id_name')方法分配id,并使用SVG.get调用(< em>'id_name')方法。
答案 1 :(得分:0)
您可能会对以下事实感兴趣:draggable-function的回调是在元素本身的范围内调用的。 此外,这里不需要使用bbox,因为宽度作为属性存储在元素中。
所以解决方案是:
square = draw.rect(size, size).x(x).y(y).draggable(function(x, y){
var xend = x - x % size;
var yend = y - y % size;
if(xend < 0)
xend = 0;
if(yend < 0)
yend = 0;
if(xend > 1000)
xend = 1000 - this.attr('width')
return { x: xend, y: yend }
});
顺便问一下:你为什么要搜索宽度并使用上面几行的大小?它的值相同,因为您只需将宽度设置为