简体   繁体   English

JavaScript:getElementById-避免代码重复

[英]JavaScript: getElementById - avoiding code duplication

I've got the following code: 我有以下代码:

 document.getElementById(this.config.dragArea).addEventListener("dragover", 
  function(e){ e.stopPropagation(); e.preventDefault(); }, false);
 document.getElementById(this.config.dragArea).addEventListener("drop",
  this._dropFiles, false);

//SAME CODE, DIFFERENT IDs
  document.getElementById(this.config.dragAreaMobi).addEventListener("dragover", 
       function(e){ e.stopPropagation(); e.preventDefault(); }, false);
  document.getElementById(this.config.dragAreaMobi).addEventListener("drop",
       this._dropFiles, false);

If I didn't want to duplicate all this code, what could I do? 如果我不想重复所有这些代码,该怎么办? Is there anyway to do something like document.getElementsById(var1, var2) ?? 无论如何有做类似document.getElementsById(var1, var2)事情吗? (NOTE: dragArea = 'id1' and dragAreaMobi = 'id2' ). (注意: dragArea = 'id1'dragAreaMobi = 'id2' )。

I tried using jQuery with: 我尝试使用jQuery与:

 $(this.config.dragArea).bind("dragover", function(e){ e.stopPropagation(); e.preventDefault(); }, false);

This code didn't work - my best guess is the difference between bind and addEventListner ... In this instance dragArea was defined as dragArea = '#id1, #id2' 这段代码行不通-我的最佳猜测是bindaddEventListner之间的区别...在这种情况下,dragArea被定义为dragArea = '#id1, #id2'

Create a function and pass the element to the function 创建一个函数并将元素传递给该函数

function bindEventListeners(elem){
    elem.addEventListener("dragover", function(e){ e.stopPropagation(); e.preventDefault(); }, false);
    elem.addEventListener("drop", this._dropFiles, false);
}

bindEventListeners(document.getElementById(this.config.dragArea));
bindEventListeners(document.getElementById(this.config.dragAreaMobi));

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM