在javascript对象方法中使用eventListener定位节点

时间:2010-02-15 18:10:46

标签: javascript html

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

我使用this失败了,因为它指的是我的代码中的对象。所以以下内容不起作用。

var node = new node();

// Node Object
function node() {

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

当我调用函数createNode()时,它会在另一个链接上汇集一个名为onclcicknode.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或其他框架。

1 个答案:

答案 0 :(得分:0)

当元素具有eventhandler时,Event对象将传递给事件处理程序。此事件对象除其他外还引用了触发事件的节点。

因此...

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/introevents.html