Прикрепить обработчик для всех типов событий - PullRequest
0 голосов
/ 28 декабря 2011

Есть ли удобный способ привязать обработчик события к элементу независимо от типа события?

Например, мне нужно что-то вроде:

$('#elem').bind(function(e){

    //do stuff for any event originating from this element
    e.stopPropagation();
});

Ответы [ 2 ]

3 голосов
/ 28 декабря 2011

Вы можете изменить поведение по умолчанию метода bind.Если мы дадим один аргумент, который будет работать, добавьте это ко всем событиям. Проверьте это.

$.fn.init.prototype.bind  = ( function( old ) {  

     return function( ) { 
        if( arguments.length == 1 && typeof arguments[0] === "function" ) { 
          // if we'll put to bind method one argument which is function 

          // list of whole of events - you set themselves as needed
          return this.bind( "click keydown keyup keypress mouseover mouseenter  mouseout mouseleave mousedown mouseup mousemove change blur focus scroll resize load unload beforeunload", arguments[0] );

        } else { 
            // trigger original bind method
            return old.apply( this, arguments ) 
        } ;
     }  

})( $.fn.init.prototype.bind );

и теперь:

$( "body" ).bind( function() { console.log( this ) } );

Poof:)

0 голосов
/ 28 декабря 2011
var eventsList = "blur, focus, load, resize, 
                scroll, unload, beforeunload, click, dblclick, 
                mousedown, mouseup, mousemove, mouseover, mouseout, 
                mouseenter, mouseleave, change, select, submit, keydown, 
                keypress, keyup, error";

(/*  selector of user choice   */).bind(eventsList, function(){

//All operations here..
});

Вы можете найти список событий здесь ... События JQuery

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...