2014-03-24 2 views
2

При входе в обработчик щелчка в JS, (вар clickHandler = button.onclick;) дает следующее, как и ожидалось:Как переназначить событие Javascript с помощью jQuery?

clickHandler:function() { 
    alert("onclick - original onclick handler"); 
} 

Однако при входе в обработчик щелчка JQuery (Var clickHandler = JQuery (» #button '). щелкните;), я получаю:

clickHandler:function (a,c){c==null&&(c=a,a=null);return arguments.length>0?this.bind(b,a,c):this.trigger(b)} 

Почему разница? Как получить дескриптор функции, чтобы я мог переназначить ее на другое событие, например. OnMouseDown?

(Мне нужно переназначить существующее событие js, в котором я не контролирую, поэтому он не был добавлен с помощью jQuery).

<input type="text" name="name_input" id="name_input" /> 
    <a href="#" id="button">Click</a> 
    <script> 
     var input = document.getElementById("name_input"); 
     var button = document.getElementById("button"); 
     input.onchange = function(event) { 
      alert("Change"); 
     }; 

     //reassign onclick to onmousedown 

     button.onclick = function() { 
      alert("onclick - original onclick handler"); 
     }; 

     //reassign onmousedown handler 
     var clickHandler = button.onclick; 
     // var clickHandler = jQuery('#button').click; 
     console.log('clickHandler:' + clickHandler); 

     button.onmousedown = clickHandler; 
    </script> 

ответ

2

Я думаю, что вы хотите:

var clickHandler = jQuery('#button')[0].click; 

JQuery ([селектор]) возвращает массив.

0

Вы можете назначить один и тот же обработчик щелчка на более чем одно событие:

$('#button').on('click mousedown', function() { 
    // do something 
}); 
0

jQuery('#button').click только метод, используемый для установки обработчика событий нажмите, он используется в качестве

jQuery('#button').click(event_handler); 

Но не

jQuery('#button').click = event_handler; 

Так jQuery('#button').click не даст вам event_handler.

0

button.onclick - это встроенная реализация браузера обработчика кликов. См. this raw HTML example, в котором показано, как назначить обработчик кликов без использования тегов скриптов. См. Эту ссылку, почему это bad idea.

Когда вы назначаете обработчики кликов с помощью jQuery, вы используете библиотеку jQuery, чтобы назначить функцию обработчика кликов кнопке. Вот почему был другой результат, когда вы напечатали jQuery('#button').click.

Я бы предположил, что вы используете только jQuery и не смешиваетесь с вызовами на родном JavaScript для управления событиями, например button.onclick = function(){};. См. here

Смежные вопросы