Расположение узла с EventListener в методе JavaScript Object

StackOverflow https://stackoverflow.com/questions/2267962

  •  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 или другая рамка.

Это было полезно?

Решение

Когда у элемента есть Eventhandler, объект события передается обработчику события. Этот объект события имеет, помимо прочего, ссылка на узел, который вызвал событие.

Так...

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);

Проблема заключается в том, что имена свойств для разных вещей отличаются от Cross Browser - это еще один резон для использования рамки, поскольку они будут реализовать определение в браузере и конкретные реализации, которые вам нужно будет сделать, если вы не будете использовать его.

См. Quirksmode.org для некоторых расширенных деталей: http://www.quirksmode.org/js/introevents.html

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top