Возможно ли на одно событие повесить несколько обработчиков ?
Например на событие mousedown повесить две функии ? Например -
element.addEventListener(mousedown , handler1, false); element.addEventListener(mousedown , handler2, false); и что бы при клике обе функции сработали. |
Это понятно, но нужно именно два обработчика, которые можно вешать и снимать в завиимости от ситуации, что бы при этом они не зависили друг от друга. Можно это сделать и другими способами, но интересует именно этот.
|
Danxil, можно сделать так
<!DOCTYPE HTML> <html> <head> </head> <body> <div id="t"> 1212</div> <script> //пример использования [start] var div = document.getElementById('t'); function one() { console.log(1); } function two () { removeEvent(this, 'click', one, two); } addEvent(div, 'click', false, one, two); //пример использования [end] // функции можно передавать массивом ([one, two]) или именами как в примере после bool function addEvent(elem, event, bool, arr) { if(!isArray(arr)) { arr = [].splice.call(arguments, 3) } _eventList.call(elem, true, event, bool, arr); } // функции можно передавать массивом ([one, two]) или именами как в примере после event function removeEvent(elem, event, arr) { if(!isArray(arr)) { arr = [].splice.call(arguments, 2) } _eventList.call(elem, false, event, false, arr); } function _eventList (isAdd, event, bool, arr) { var leng = arr.length; for(var i = 0; i < leng; i++) { if(isAdd) this.addEventListener(event, arr[i], bool); else this.removeEventListener(event, arr[i]); } } function isArray(arr) { return !!~{}.toString.call(arr).indexOf('Array'); } </script> </body> </html> |
Часовой пояс GMT +3, время: 21:02. |