在JavaScript对象方法中使用EventListener定位节点
-
20-09-2019 - |
题
在我编写的程序中,我需要能够访问在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
不隶属于 StackOverflow