代码之家  ›  专栏  ›  技术社区  ›  Kevin

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

  •  1
  • Kevin  · 技术社区  · 14 年前

    在我编写的程序中,我需要能够访问用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); } }
    

    如何访问具有 隆起 正在单击的附加事件,而不必创建代码负载,因此我可以为已创建的节点(而不仅仅是主干)创建子节点和兄弟节点?

    注释 以下内容:

    我要这么做 没有 jquery或其他框架。

    1 回复  |  直到 14 年前
        1
  •  0
  •   prodigitalson    14 年前

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

    所以…

    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