Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.11.2013, 17:16
Аспирант
Отправить личное сообщение для Danxil Посмотреть профиль Найти все сообщения от Danxil
 
Регистрация: 08.11.2013
Сообщений: 37

Возможно ли на одно событие повесить несколько обработчиков ?
Например на событие mousedown повесить две функии ? Например -

element.addEventListener(mousedown , handler1, false);
element.addEventListener(mousedown , handler2, false);

и что бы при клике обе функции сработали.
Ответить с цитированием
  #2 (permalink)  
Старый 26.11.2013, 18:07
Аспирант
Отправить личное сообщение для Danxil Посмотреть профиль Найти все сообщения от Danxil
 
Регистрация: 08.11.2013
Сообщений: 37

Это понятно, но нужно именно два обработчика, которые можно вешать и снимать в завиимости от ситуации, что бы при этом они не зависили друг от друга. Можно это сделать и другими способами, но интересует именно этот.
Ответить с цитированием
  #3 (permalink)  
Старый 26.11.2013, 21:08
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

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>
__________________
Цитата:
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Повесить событие на кнопку, не меняя кода кнопки Weks Общие вопросы Javascript 8 11.11.2012 16:13
повесить обработчик на событие Ia_alex Events/DOM/Window 2 17.09.2012 14:23
повесить событие на массив элементов zlodiak Элементы интерфейса 1 24.02.2012 13:57
Несколько функций на одно событие. abstract Events/DOM/Window 13 26.10.2010 10:46
Как повесить событие без редактирования файла? bilbas Общие вопросы Javascript 8 11.09.2009 15:17