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

时间:2016-12-12 07:05:00

标签: javascript events javascript-events event-handling mouseevent

以下是动态创建元素并附加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);

如何附加右键单击事件?

5 个答案:

答案 0 :(得分:3)

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

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!");
 })

答案 1 :(得分:1)

您可以使用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);
}

答案 2 :(得分:1)

添加

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

而是onclick

答案 3 :(得分:0)

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

答案 4 :(得分:0)

工作示例

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

},false);

Codepen: http://codepen.io/mastersmind/pen/WogoVB