web2ajax : The Blog

sept200703No talk

Alors, attention en avant première mondiale !!, voici la Bonne méthode pour binder un callback sur un DOM… (Je me la pète là)

En clair, les événements comme "onClick", "onMouseOver", mappage de des touches peuvent être associés dynamiquement à des fonctions javascript et donc à la puissance de jQuery !

 

Un bon mouseOver ou onClick :

 

$("#div_id").unbind( "click" ) $('#div_id').bind("click", function() { alert('Oh yes, click me again !'; }); $("#div_id").unbind( "mouseover" ) $('#div_id').bind("mouseover", function() { alert('Mouse is Over me !'; });

 

=> Pour plus de détails : http://jquery.developpeur-web2.com/documentation/evenements/bind.php

 

Un bon mappage de touche (Je m’en sers pour afficher la fenêtre de login admin sur CTRL+L) :

 

Ajouter &ccedil;a dans les headers, le.js est dispo en dessous de l'article : <script src="includes/jQuery/jquery.shortkeys.js" type="text/javascript"></script> Apr&egrave;s : $(document).shortkeys({ 'CTRL+L': function () { _dispLoginForm(); } });

 

=> Plus de détails : http://rikrikrik.com/jquery/shortkeys/

jQuery.fn.shortkeys = jQuery.fn.keys = function (obj, settings) {			var el = this;	this.settings = jQuery.extend({			split: "+",			moreKeys: {}					}, settings || {});		this.wackyKeys = { '.': 190, ',': 188, ';': 59,	'Space': 32	};		this.formElements  = new Array("input", "select", "textarea", "button");	this.keys = new Array();		this.onFormElement = false;	this.keysDown = new Array();	this.init = function (obj) {		for(x in this.wackyKeys) {			this.wackyKeys[x.toUpperCase()] = this.wackyKeys[x];		}		for(x in obj) {			this.keys.push(x.split(this.settings.split));		}		for(i in this.keys) {			var quickArr = new Array();			for(j in this.keys[i]) {				quickArr.push(this.convertToNumbers(this.keys[i][j].toUpperCase()));			}			quickArr.sort();			this.keys[i] = quickArr;		}	};		this.convertToNumbers = function (inp) {		if (this.wackyKeys[inp] != undefined) {			return this.wackyKeys[inp];		}		return inp.toUpperCase().charCodeAt(0);	};		this.keyAdd = function(keyCode) {		this.keysDown.push(keyCode);		this.keysDown.sort();	};	this.keyRemove = function (keyCode) {		for(i in this.keysDown) {			if(this.keysDown[i] == keyCode) {				this.keysDown.splice(i,1);			}		};			this.keysDown.sort();		};			this.keyTest = function (i) {		if (this.keys[i].length != this.keysDown.length) return false;		for(j in this.keys[i]) {			if(this.keys[i][j] != this.keysDown[j]) {				return false;			}		}			return true;	};	this.keyRemoveAll = function () {		this.keysDown = new Array();		};	this.focused = function (bool) {		this.onFormElement = bool;	}		$(document).keydown(function(e) {		el.keyAdd(e.keyCode);		var i = 0;		for(x in obj) {			if(el.keyTest(i) && !el.onFormElement) {				obj[x]();				return false;				break;				}						i++;		};		});		$(document).keyup(function (e) {		el.keyRemove(e.keyCode);	});		for(x in this.formElements) {		$(this.formElements[x]).focus( function () {			el.focused(true);		});		$(this.formElements[x]).blur( function () {			el.focused(false);		});	}		$(document).focus( function () {		el.keyRemoveAll();	});

	this.init(obj);	jQuery.extend(this.wackyKeys, this.settings.moreKeys);

	return this;}

Pas de commentaire

Pas encore de commentaire.

LEAVE A COMMENT