从自身的一个版本中创建新的JavaScript对象
create new javascript object from within a version of itself
我从这篇博文中分叉了一个JSfiddle(只是为了在星期二晚上好玩......http://boundary.com/blog/2012/07/03/building-node-diagrams-in-html5/
并且每次双击一个时都试图创建一个链接new Node()
。我的小提琴在这里http://jsfiddle.net/joevallender/cGzCe/4/
起初我试图不弄乱库,但小提琴包括(在资源中(一个更改版本,我在其中添加了对 dblclick 事件的支持。
无论如何,切中要害!我正在传递一个要在事件上运行的函数,双击firstNode
时它确实有效,但我需要不断将事件重新添加到每个新创建的节点/以某种方式引用创建函数,这会猜测我们进入循环。
var create = function() {
var node = new Node({
title: 'Node',
stage: stage,
w: NODE_DIMENSIONS.w,
h: NODE_DIMENSIONS.h,
x: 100,
y: 100
}).attach();
new Segment({
h: 5,
stage: stage,
origin: this,
destination: node
}).attach();
}
var firstNode = new Node({
title: 'Node',
stage: stage,
w: NODE_DIMENSIONS.w,
h: NODE_DIMENSIONS.h,
x: 350,
y: 50,
events: {
dblclick: create
}
}).attach();
我觉得我应该考虑修改双击事件的原型功能,但只是有点迷路了。有没有人知道我在说什么?b(你能帮忙吗?这不是客户工作或任何东西,但我只是想知道!
我已经快速扫描了重复的内容,但正如您可能从我措辞糟糕的问题标题中可以看出的那样,我不完全确定如何措辞我的搜索!
实现此目的的最快方法是将dblclick
事件添加到创建的节点。您应该能够扩展 Node 类以自动执行此操作,但我不确定是否有必要。
var create = function() {
var node = new Node({
title: 'Node',
stage: stage,
w: NODE_DIMENSIONS.w,
h: NODE_DIMENSIONS.h,
x: 100,
y: 100,
events:{ // add the event to the created node.
dblclick: create
}
}).attach();
new Segment({
h: 5,
stage: stage,
origin: this,
destination: node
}).attach();
//nodes.push(node);
}
为了定位新创建的节点,我建议它相对于它们产生的节点:
var create = function() {
var ancestor = $(event.target); // get the element that was double clicked
var top = ancestor.position().top; // and its position
var left = ancestor.position().left;
var node = new Node({
title: 'Node',
stage: stage,
w: NODE_DIMENSIONS.w,
h: NODE_DIMENSIONS.h,
x: left + 100, //new position relative to the parent.
y: top + 100,
events:{
dblclick: create
}
}).attach();
new Segment({
h: 5,
stage: stage,
origin: this,
destination: node
}).attach();
//nodes.push(node);
}
您的代码工作正常,但问题是新节点相互重叠,因为在创建函数中,您的 x 和 y 位于 100 以创建新节点。
所以我使用 math.random 为新节点生成随机的 x,y 位置
这是演示
您应该根据需要随机生成新的节点位置和名称
相关文章:
- 从自身的一个版本中创建新的JavaScript对象
- 如何在最新的 cordova 版本(5.0.0 以上)中创建 java 注释方法
- 是否可以在没有app.js的情况下创建一个extjs应用程序的js文件(如构建版本)
- 一个函数,它接受回调并创建只能调用一次的新版本的回调.Javascript
- 如何同时创建两者'web'和'节点'Webpack捆绑包的版本
- 我如何用HTML和CSS创建Facebook iOS主屏幕的版本
- ExtJs,从不同版本的iframe创建窗口,正确设置高度
- CodeIgniter:根据屏幕宽度加载不同的视图,而不是创建移动版本
- 删除PHP中JSON数组的索引,创建字符串版本的索引
- 创建一个脚本来创建一个链接,该链接是当前URL的修改版本
- 通过组合pdf.js和pdf.worker.js创建一个离线版本的pdf.js
- 如何在IE9及更低版本中下载由jszip.js创建的zip文件,而不使用基于flash的下载
- 创建具有源对象中所有方法的修改版本的对象
- 如何为Hogan.js创建自定义绑定语法(未转义的HTML版本)
- 创建您自己版本的输入[type=file]
- 请帮我创建一个循环版本
- 如何在 SuiteScript 2.0 版本中创建搜索
- 需要为我的导航创建移动版本失败
- Angular和SEO——创建静态HTML版本
- 在聚合物元素中动态创建html导入(版本1.0)