2016-10-05 08:06:51 +00:00
|
|
|
/* SELECTEUR CSS UNIQUE/MULTIPLE
|
2016-10-05 06:30:30 +00:00
|
|
|
*/
|
2016-10-05 08:06:51 +00:00
|
|
|
var $ = function(selector){ return document.querySelector(selector ); };
|
|
|
|
var $$ = function(selector){ return document.querySelectorAll(selector); };
|
2016-10-05 06:30:30 +00:00
|
|
|
|
|
|
|
|
|
|
|
/* Retourne un data-* attribute d'un element (surcharge de l'ELEMENT natif)
|
|
|
|
*
|
|
|
|
* @attribute<String> L'attribut qui nous interesse
|
|
|
|
*
|
|
|
|
* @return value<String> Retourne la valeur si l'attribut existe
|
|
|
|
* @return false Retourne FALSE si rien n'a ete trouve
|
|
|
|
*
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
Element.prototype.getData = function(attribute){
|
|
|
|
// On verifie qu'un data-* attribute existe
|
|
|
|
if( typeof this.dataset == 'undefined' )
|
|
|
|
return false;
|
|
|
|
|
|
|
|
return ( this.dataset.hasOwnProperty(attribute) ) ? this.dataset[attribute] : false;
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* Ajout de classe pour un element (surcharge de l'ELEMENT natif)
|
|
|
|
*
|
|
|
|
* @className<String> Classe a ajouter a l'element
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
Element.prototype.addClass = function(className){
|
|
|
|
/* [1] On transforme la classe actuelle en tableau
|
|
|
|
====================================================*/
|
|
|
|
var classArray = this.className.split(' ');
|
|
|
|
|
|
|
|
/* [2] On ajoute la classe si elle n'y est pas deja
|
|
|
|
====================================================*/
|
|
|
|
if( classArray.indexOf(className) > -1 ) return; // La classe y est deja
|
|
|
|
|
|
|
|
classArray.push(className);
|
|
|
|
|
|
|
|
/* [3] On reformatte tout
|
|
|
|
====================================================*/
|
|
|
|
this.className = classArray.join(' ').trim();
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/* Suppression de classe pour un element (surcharge de l'ELEMENT natif)
|
|
|
|
*
|
|
|
|
* @className<String> Classe a supprimer a l'element
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
Element.prototype.remClass = function(className){
|
|
|
|
/* [1] On transforme la classe actuelle en tableau
|
|
|
|
====================================================*/
|
|
|
|
var classArray = this.className.split(' ');
|
|
|
|
|
|
|
|
/* [2] On retire la classe si elle y est
|
|
|
|
====================================================*/
|
|
|
|
var index = classArray.indexOf(className);
|
|
|
|
|
|
|
|
if( index == -1 ) return; // La classe n'y est pas
|
|
|
|
|
|
|
|
classArray = classArray.slice(0,index).concat( classArray.slice(index+1) );
|
|
|
|
|
|
|
|
/* [3] On reformatte tout
|
|
|
|
====================================================*/
|
|
|
|
this.className = classArray.join(' ').trim();
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
// on définit le "indexOf" pour <HTMLCollection> et <NodeList>
|
|
|
|
NodeList.prototype.indexOf = HTMLCollection.prototype.indexOf = function(searchedElement){
|
|
|
|
for( var i = 0 ; i < this.length ; i++ ) // on parcours la collection
|
|
|
|
// si on trouve l'élement, on retourne son rang
|
|
|
|
if( this[i] == searchedElement ) return i;
|
|
|
|
|
|
|
|
// si on a rien trouvé, on retourne -1
|
|
|
|
return -1;
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// GESTION DES ANIMATIONS (CLASSE PENDANT TEMPS IMPARTI)
|
|
|
|
Element.prototype.anim = function(className, timeout){
|
|
|
|
|
|
|
|
var pointer = this; // on cree un pointeur
|
|
|
|
|
|
|
|
pointer.addClass(className); // on met la classe
|
|
|
|
|
|
|
|
// on la retire apres le @timeout imparti
|
|
|
|
setTimeout(function(){ pointer.remClass(className); }, timeout);
|
|
|
|
|
|
|
|
};
|