在动态创建的元素上附加右键单击事件

Attaching Right Click Event on Dynamically Created Elements

下面是动态创建元素并附加 onclick 事件的代码。

var div = document.createElement('div');
div.onclick = function(e){
    console.debug(e);           
}

var parent = document.getElementsByClassName('myid_templates_editor_center_menu');
parent[0].appendChild(div);

附加一个右键单击事件如何?

您可以使用 contextmenu 事件

window.onload = function() {
  var div = document.createElement("div");
  div.innerHTML = "right click";
  div.oncontextmenu = function(e) {
    console.debug(e.type, e);
  }

  document.body.appendChild(div);
}

添加

div.oncontextmenu = function(e){
    e.preventDefault();
    console.debug(e);           
}

而不是点击

您问题的答案由两部分组成:

1) 如何附加右键事件?

答案:使用contextmenu事件。

2) 如何将事件附加到动态创建的元素?

答案:想法是将事件附加到将包含您新创建的元素的父元素。该事件将沿着 DOM 传播,直到它到达您的父元素。

工作示例:

//get parent elements
var elements = getElementsByClassName('myid_templates_editor_center_menu'); 

//attach to the first found parent element
elements[0].addEventlistener('contextmenu', function(e) {
    console.log("right clicked!");
 })
var div = document.createElement('div');
div.oncontextmenu = function(e){
    console.debug(e);           
}

var parent = document.getElementsByClassName('myid_templates_editor_center_menu');
parent[0].appendChild(div);

工作示例

node.addEventListener('contextmenu', function(ev) {
ev.preventDefault();
alert('success! - Right Click');
return false;

}, 假);

代码笔: http://codepen.io/mastersmind/pen/WogoVB