在我编写的程序中,我需要能够访问在JavaScript中发送事件的节点。

我一直在使用 this, ,因为它指的是我的代码中的对象。因此,以下内容不起作用。

var node = new node();

// Node Object
function node() {

// Create Sibling Node
this.createSibling = function() {
 var node = createNode();
 this.parentNode.appendChild(node); } }

当我调用功能时 createNode() 它组装了一个有事件的链接 onclcick 附着在它上 node.createSibling()node.createChild() 在其他链接上。

我目前正在使用 var NODETREE 作为父母,因为我不知道如何获得开始单击的节点。这使我无法与自己的孩子和兄弟姐妹一起创建节点;只有主节点才能得到它们。

    var node = new node();

   // Node Object
   function node() {

   // Instance Veriables    
   var NODETREE = document.getElementById('node-tree');

   // Create Sibling Node
   this.createSibling = function() {
   var node = createNode();
   NODETREE.appendChild(node); } }

我如何访问具有 onclcick 即将单击的事件,而无需创建大量代码,因此我可以为我创建的节点创建儿童和兄弟姐妹,而不仅仅是中继?

笔记:

我需要这样做 没有 jQuery或其他框架。

有帮助吗?

解决方案

当元素具有事件手册时,事件对象将传递给事件处理程序。此事件对象具有其他事物的参考,对触发事件的节点。

所以...

var createSibling = function(_event){
  var e = this; // the element this function is actually attached to
  var event_e = _event.target; //another way to get at the element clicked

  // do stuff
};

document.getElementById('myElement').onClick = createSibling;
document.getElementById('myElement').captureEvents(Event.CLICK);

问题是不同事物的属性名称不同的交叉浏览器 - 这是使用框架的另一个共鸣,因为它们将实现浏览器检测和特定的实现,如果您不使用该实现,则需要执行。

有关一些高级详细信息,请参见Quirksmode.org: http://www.quirksmode.org/js/introvents.html

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top