2013-07-30 4 views
0

у меня есть следующий код:JavaScript: getElementById - избежать дублирования кода

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

Если я не хочу, чтобы дублировать весь этот код, что я мог сделать? Есть ли способ сделать что-то вроде document.getElementsById(var1, var2) ?? (ПРИМЕЧАНИЕ: dragArea = 'id1' и dragAreaMobi = 'id2').

Я попытался с помощью JQuery с:

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

Этот код не работает - моя догадка разница между bind и addEventListner ... В этом случае dragArea был определен как dragArea = '#id1, #id2'

+0

сделать больше, писать меньше с помощью JQuery –

+0

Будет ли dragArea быть 'dragArea = 'id1, id2''? Разве это не привело бы к чему-то вроде '$ ('# id1, id2)' во время выполнения? (Второй id отсутствует #) – user1775598

+0

@ user1775598, да, вы правы. – Sergio

ответ

0

Создайте функцию и передайте элемент в функцию

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)); 
Смежные вопросы