IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

jQuery Discussion :

Héritage de méthodes [Plugin]


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Inscrit en
    Mars 2010
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations forums :
    Inscription : Mars 2010
    Messages : 93
    Par défaut Héritage de méthodes
    bonjour tout le monde.
    ça fait un bout de temps que je cherche sans réponse à ma question.
    j'essaye de développer un plugin jQuery qui va filtrer le contenu d'une htmlSelect selon le texte tapé par l'utilisateur dans une htmlInputText.
    voilà la code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
     
    (function($){
     
    	function keyup() {
    		alert(this._select); // j'obtien toujours "undefined"
    		// valeur a chercher
    		value = $(this).val();
     
    		// vider la liste
    		$(this._select).empty();
     
    		$(this.allOptions).each(function() {
    			if ($(this).text().toLowerCase().indexOf(value.toLowerCase()) != -1) {
    				opt = $(this).clone();
    				$(this._select).append(opt);
    			}
    		});
    	};
     
    	function selectOnFocus(){
    		$(this.input).stop(true,true).fadeIn('fast');
    	};
     
    $.fn.filterSelect = function (options) {
     
    	var defaultOptions = {
    							inputClassName: '',  // class a ajouter a l'objet input text qui sera ajouté avant le select
    							Width: '',               // width du div
    							Height: ''               // height du div
    						 };
     
    	// appliquer les options passés en paramettre
    	defaultOptions = $.extend(defaultOptions, options);
     
    	$(this).each(function() {
    		// si  l'element n'est pas un HTMLSelectElement alors ne rien faire
    		if (!(this instanceof HTMLSelectElement)) return this;
     
    		this._select = this;
     
    		this.input = $('<input />', {
    									id: this.id + '_srch',
    									type: 'text',
    									'class': defaultOptions.inputClassName,
    									autocomplete: 'off'
    								});
    		div = $('<div >',{});
     
    		$(this.input).css({
    							display: 'none'
    						});
     
    		$(this).wrap(div);
     
    		$(this).before(this.input);
     
    		if (defaultOptions.selectHeight != '') $(div).height(defaultOptions.Height);
    		if (defaultOptions.selectWidth != '') $(div).width(defaultOptions.Width);
     
    		// attribs
    		this.allOptions = $(this).find('option').clone();
     
    		this.keyup = keyup;
    		$(this.input).bind('keyup', this.keyup);
     
    		this.selectOnFocus = selectOnFocus;
    		$(this._select).bind('focus', this.selectOnFocus);
    	});
    	return this;
    }
     
    })(jQuery);
    et pour l'utilisation dans une page html

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <script>
    	$(document).ready(function() {
    		$('select').filterSelect({Width: 290, Height: '100%', inputClassName: 'input_text'});
    	});
    </script>
    maintenant quand je focus l'htmlInputText j'obtien la valeur "undefined".
    je ne sais pas pourquoi ?
    si je met la définition de la fonction keyup() à l'intérieur de la fonction each() elle fonctionne mais je veux qu'elle soit partagée afin de gagner au niveau des performances.
    aidez moi svp et merci d'avance.

  2. #2
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    Bonsoir

    Première version du plugin filterSelect.

    Pour tester, il suffit de copier-coller ma page de test.

    Essayer en tapant : "u" ou "n" ou "n t" (avec ou sans un espace entre le n et le t).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    <!DOCTYPE html>
    <html lang="fr" manifest="http://danielhagnoul.developpez.com/pageTest.mf">
    <head>
    	<meta charset="utf-8" />
    	<meta name="viewport" content="initial-scale=1.0">
    	<meta name="author" content="Daniel Hagnoul">
    	<title>Forum jQuery</title>
    	<link href='http://fonts.googleapis.com/css?family=Sofia|Ubuntu:400|Kreon'>
    	<link rel="stylesheet" href="http://danielhagnoul.developpez.com/styles/dvjhRemBase.css">
    	<style>
    		.hyphens { -moz-hyphens:auto; -webkit-hyphens:auto; -ms-hyphens:auto; hyphens:auto; }
    		article { display:table-cell; text-align:justify; border:0.1rem dotted grey; }
    		.table1 { border-collapse:separate; border-spacing:3rem; }
    		.ligne { display:table-row; }
    		.table1 .ligne { min-height:30rem; }
    		.table1 article { min-width:40rem; vertical-align:top; }
     
    		/* TEST */
     
    	</style>
    </head>
    <body>
    	<header>
    		<hgroup>
    			<h1>Forum jQuery</h1>
    			<h2>Titre 2</h2>
    		</hgroup>
    	</header>
    	<section class="conteneur">				
    		<section class="table1">
    			<section class="ligne">
    				<article>
     
    					<select id="selectID">
    						<option value="1" selected>Un</option>
    						<option value="2">Deux</option>
    						<option value="3">Trois</option>
    						<option value="4">Quatre</option>
    					</select>
     
    				</article>
    				<article>
     
    				</article>
    			</section>
    		</section>
    	</section>
    	<footer itemscope itemtype="http://danielhagnoul.developpez.com/">
    		<time datetime="2012-12-23T21:12:59.904+01:00" pubdate>2012-12-23T21:12:59.904+01:00</time>
    		<span itemprop="name">Daniel Hagnoul</span>
    		<a href="http://www.developpez.net/forums/u285162/danielhagnoul/" itemprop="url">@danielhagnoul</a>
    		<a href="http://danielhagnoul.developpez.com/" itemprop="url">Mon cahier d’exercices</a>
    		<a href="http://javascript.developpez.com/faq/jquery/" itemprop="url">FAQ</a>
    		<a href="http://javascript.developpez.com/cours/?page=frameworks#jquery" itemprop="url">Tutoriels</a>
    	</footer>
    	<script src="http://danielhagnoul.developpez.com/lib/raphael-min.js"></script>
    	<script src="http://code.jquery.com/jquery-1.9.0b1.js"></script>
    	<!--<script src="http://code.jquery.com/jquery-migrate-1.0.0b1.js"></script>-->
    	<script src="http://code.jquery.com/color/jquery.color-2.1.1.min.js"></script>
    	<script src="http://danielhagnoul.developpez.com/lib/dvjh/base.js"></script>
    	<script>
    		"use strict";
     
    		( function( $ ){
    			/*
    			 * Filtre le contenu d'une HTMLSelect selon le texte 
    			 * tapé par l'utilisateur dans une HTMLInputText.
    			 * 
    			 * Stocke une copie du HTMLSelect au démarrage.
    			 * Restaure la copie sur demande.
    			 */
    			$.fn.filterSelect = function( options ){
    				var opts = $.extend( true, {}, $.fn.filterSelect.defaults, options ),
    					self = null,
    					jObjInput = null;
     
    				return this.each( function( i, item ){
     
    					if ( item instanceof HTMLSelectElement ){
     
    						self = $( item );
     
    						/*
    						 * Filtre les options
    						 */
    						jObjInput = $( "<input />", {
    							//"id" : "", // inutile
    							//"class" : "", // inutile, mettre le style dans le css ci-dessous
    							"type" : "text",
    							"css" : {
    								"display" : "block",
    								"margin" : "12px"
    							},
    							"keyup" : function(){
    								var str = $( this ).val(); // valeur dans l'input
     
    								if ( str.length > 0 ){
     
    									/*
    									 * On supprime chaque option qui contient str
    									 */
    									$( "option", self ).each( function( j, jtem ){
     
    										if ( $( jtem ).text().toLowerCase().indexOf( str.toLowerCase() ) > -1 ){
    											$( jtem ).remove();
    										}
     
    									});
     
    								}
     
    							}
    						}).insertBefore( self );
     
    						/*
    						 * Sauvegarde une copie des options
    						 */
    						jObjInput.data( "cloneOfOptions", $( "option", self ).clone( true, true ) );
     
    						/*
    						 * Restaure les options
    						 */
    						$( "<button/>", {
    							"text" : "Reset HTMLSelect",
    							"css" : {
    								"display" : "block",
    								"margin" : "12px"
    							},
    							"click" : function(){
    								self.html( jObjInput.data( "cloneOfOptions" ) );
     
    								return false;
    							}
     
    						}).insertAfter( self );
     
    					}
    				});
    			};
     
    			$.fn.filterSelect.defaults = {
    				"inputClassName" : "filterSelect"
    		    };
     
    		})(jQuery);
     
    		$( function(){
     
    			$( "#selectID" ).filterSelect();
     
    		});
     
    		$( window ).load( function(){
     
    		});
    	</script>
    </body>
    </html>

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  3. #3
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    Version 1.0.2 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    <!DOCTYPE html>
    <html lang="fr" manifest="http://danielhagnoul.developpez.com/pageTest.mf">
    <head>
    	<meta charset="utf-8" />
    	<meta name="viewport" content="initial-scale=1.0">
    	<meta name="author" content="Daniel Hagnoul">
    	<title>Forum jQuery</title>
    	<link href='http://fonts.googleapis.com/css?family=Sofia|Ubuntu:400|Kreon'>
    	<link rel="stylesheet" href="http://danielhagnoul.developpez.com/styles/dvjhRemBase.css">
    	<style>
    		.hyphens { -moz-hyphens: auto; -webkit-hyphens: auto; -ms-hyphens: auto; hyphens: auto; }
    		article { display: table-cell; text-align: justify; border: 0.1rem dotted grey; }
    		.table1 { border-collapse: separate; border-spacing: 3rem; empty-cells: hide; caption-side: top; }
    		.ligne { display: table-row; }
    		.caption { display: table-caption; text-align: center; }
    		.table1 .ligne { min-height: 30rem; }
    		.table1 article { min-width: 40rem; vertical-align: top; }
     
    		/* TEST */
     
    	</style>
    </head>
    <body>
    	<header>
    		<hgroup>
    			<h1>Forum jQuery</h1>
    			<h2>Plugin filterSelect</h2>
    		</hgroup>
    	</header>
    	<section class="conteneur">				
    		<section class="table1">
    			<!--<section class="caption">
    					<h3>Table CCS3</h3>
    			</section>-->
    			<section class="ligne">
    				<article>
     
    					<select id="selectID">
    						<option value="1" selected>Un</option>
    						<option value="2">Deux</option>
    						<option value="3">Trois</option>
    						<option value="4">Quatre</option>
    					</select>
     
    				</article>
    				<article>
     
    				</article>
    			</section>
    		</section>
    	</section>
    	<footer itemscope itemtype="http://danielhagnoul.developpez.com/">
    		<time datetime="2012-12-23T21:12:59.904+01:00" pubdate>2012-12-23T21:12:59.904+01:00</time>
    		<span itemprop="name">Daniel Hagnoul</span>
    		<a href="http://www.developpez.net/forums/u285162/danielhagnoul/" itemprop="url">@danielhagnoul</a>
    		<a href="http://danielhagnoul.developpez.com/" itemprop="url">Mon cahier d’exercices</a>
    		<a href="http://javascript.developpez.com/faq/jquery/" itemprop="url">FAQ</a>
    		<a href="http://javascript.developpez.com/cours/?page=frameworks#jquery" itemprop="url">Tutoriels</a>
    	</footer>
    	<script src="http://danielhagnoul.developpez.com/lib/raphael-min.js"></script>
    	<script src="http://code.jquery.com/jquery-1.9.0b1.js"></script>
    	<!--<script src="http://code.jquery.com/jquery-migrate-1.0.0b1.js"></script>-->
    	<script src="http://code.jquery.com/color/jquery.color-2.1.1.min.js"></script>
    	<script src="http://danielhagnoul.developpez.com/lib/dvjh/base.js"></script>
    	<script>
    		"use strict";
     
    		( function( $ ){
    			/*
    			 * Filtre le contenu d'une HTMLSelect selon le texte 
    			 * tapé par l'utilisateur dans une HTMLInputText.
    			 * 
    			 * Stocke une copie des options du HTMLSelect au démarrage.
    			 * Restaure la copie sur demande.
    			 */
    			$.fn.filterSelect = function( options ){
    				var opts = $.extend( true, {}, $.fn.filterSelect.defaults, options );
     
    				return this.each( function( i, item ){
     
    					if ( item instanceof HTMLSelectElement ){
     
    						var self = $( item ),
    							jObjDiv,
    							jObjInput,
    							jObjBtn;
     
    						/*
    						 * Division autour du HTMLSelect
    						 */
    						jObjDiv = $( "<div/>", {
    							"mouseenter" : function(){
    								jObjInput.show();
    								jObjBtn.show();
    							},
    							"mouseleave" : function(){
    								jObjInput.hide();
    								jObjBtn.hide();
    							}
    						});
     
    						self.wrap( jObjDiv );
     
    						/*
    						 * Filtre les options
    						 */
    						jObjInput = $( "<input />", {
    							"placeholder" : "Filtre les options",
    							"type" : "text",
    							"css" : {
    								"display" : "none",
    								"margin" : "12px"
    							},
    							"keyup" : function(){
    								var str = $( this ).val(); // valeur dans l'input
     
    								if ( str.length > 0 ){
     
    									/*
    									 * On supprime chaque option qui contient str
    									 */
    									$( "option", self ).each( function( j, jtem ){
     
    										if ( $( jtem ).text().toLowerCase().indexOf( str.toLowerCase() ) > -1 ){
    											$( jtem ).remove();
    										}
     
    									});
     
    								}
     
    							}
    						}).insertAfter( self );
     
    						/*
    						 * Sauvegarde une copie des options
    						 */
    						jObjInput.data( "cloneOfOptions", $( "option", self ).clone( true, true ) );
     
    						/*
    						 * Restaure les options du HTMLSelect
    						 */
    						jObjBtn = $( "<button/>", {
    							"text" : "Reset HTMLSelect",
    							"css" : {
    								"display" : "none",
    								"margin" : "12px"
    							},
    							"click" : function(){
    								self.html( jObjInput.data( "cloneOfOptions" ) );
     
    								jObjInput.val( "" );
     
    								return false;
    							}
     
    						}).insertAfter( jObjInput );
     
    					}
    				});
    			};
     
    			$.fn.filterSelect.defaults = {
    				"optionName" : "optionValue"
    		    };
     
    		})(jQuery);
     
    		$( function(){
     
    			$( "#selectID" ).filterSelect();
     
    		});
     
    		$( window ).load( function(){
     
    		});
    	</script>
    </body>
    </html>

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  4. #4
    Membre actif
    Homme Profil pro
    Inscrit en
    Mars 2010
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations forums :
    Inscription : Mars 2010
    Messages : 93
    Par défaut
    merci danielhagnoul pour votre aide.
    je vois dans votre code que vous définissez la méthode keyup() à l’intérieur du block filterSelect cela fonctionne très bien avec moi mais ce que je veux faire c'est rendre toutes le méthodes partagées de façon à ce que tous les objets instanciés se réfèrent à la même méthode au lieu de créer une dans chaque objet.
    je veux afficher l'htmlInput quand le select a le focus et le cacher quant le select et l'htmlInput perdent tous les deux le focus ça donne pas mal de méthode a définir donc plus de mémoire à consommer.
    ce que je ne comprend pas c'est que dans la méthode selectOnFocus() les objets "this._select" et "this.input" sont reconnus mais dans keyup() il ne sont pas référencés ?
    aidez moi SVP.

  5. #5
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    J'essaye de développer un plugin jQuery qui va filtrer le contenu d'une htmlSelect selon le texte tapé par l'utilisateur dans une htmlInputText.
    C'est la seule chose que j'ai comprise dans votre message.

    Il y a plusieurs manières valables d'écrire un plugin multitâches, mais pour un plugin mono tâche j'utilise la méthode la plus simple et la plus versatile, celle de Mike Alsup depuis des années et toujours avec succès.

    Dans un plugin, on trouve une valeur spéciale de this (que l'on retourne et que l'on manipule comme un array d'objet jQuery), des éléments du DOM (exemple : item), des objets jQuery (exemples : $( item ), jObjX) et des gestionnaires d'événements (exemples : "clikc", "keyup", "mouseenter", "mouseleave") mais rien qui ressemble à vos this.xyz !

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  6. #6
    Membre actif
    Homme Profil pro
    Inscrit en
    Mars 2010
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations forums :
    Inscription : Mars 2010
    Messages : 93
    Par défaut
    merci danielhagnoul.
    j'ai résolu le probleme j'ai passé des informations aux événements par le parametre data de la methode bind().

    voilà le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
     
    (function($){
     
    	// filtrer les options du select en fonction de la valeur de l'input
    	function filter(event) {
    		// valeur a chercher
    		value = $(this).val();
     
    		if (!value || value == '') {
    			$(event.data._select).append($(event.data.allOptions).clone());
    			return;
    		}
     
    		// vider la liste
    		$(event.data._select).empty();
     
    		$(event.data.allOptions).each(function() {
    			if ($(this).text().toLowerCase().indexOf(value.toLowerCase()) != -1) {
    				opt = $(this).clone();
    				$(event.data._select).append(opt);
    			}
    		});
    	};
     
    	function Enter(event){
    		$(event.data.input).stop(true,true).fadeIn('fast');
    	};
     
    	function Leave(event){
    		if ($(event.data.input).filter('*:focus').length == 0) {
    			$(event.data.input).stop(true,true).fadeOut('fast');
    		}
    	};
     
    	function inputBlur(event){
    		$(this).stop(true,true).fadeOut('fast');
    	};
     
    	function inputFocus(event){
    		this.value = '';
    	};
     
    $.fn.selectFiltrer = function (options) {
     
    	// options par defaut
    	var defaultOptions = {
    							inputClassName: '',      // class a ajouter a l'objet input text qui sera ajouté avant le select
    							Width: '',               // width du table
    							Height: ''               // height du table
    						 };
     
    	// appliquer les options passés en paramettre
    	defaultOptions = $.extend(defaultOptions, options);
     
    	$(this).each(function() {
    		// si  l'element n'est pas un HTMLSelectElement alors ne rien faire
    		if (!(this instanceof HTMLSelectElement)) return this;
     
    		// attribus
    		var allOptions = $(this).find('option').clone();
     
    		// les element pour la structure du composant "selectFiltrer"
    		var table = document.createElement('table');
    		var tr = document.createElement('tr');
    		var td = document.createElement('td');
    		var tr2 = tr.cloneNode();
    		var td2 = td.cloneNode();
    		var input = document.createElement('input');
     
    		$(input).attr({
    							id: this.id + '_srch',
    							type: 'text',
    							value: '-Tapez quelque chose pour filtrer la liste-',
    							'class': defaultOptions.inputClassName,
    							autocomplete: 'off'
    						});
    		// cacher l'element
    		//$(input).css({display: 'none'});
     
    		// creer la structure DOM du composant
    		$(this).replaceWith(table);
    		$(table).append(tr);
    		$(table).append(tr2);
    		$(table).append(tr2);
    		$(tr).append(td);
    		$(tr2).append(td2);
    		$(td).append(input);
    		$(td2).append(this);
     
    		// appliquer height et width
    		if (defaultOptions.selectHeight != '') $(table).height(defaultOptions.Height);
    		if (defaultOptions.selectWidth != '') $(table).width(defaultOptions.Width);
     
    		$(input).bind('keyup change', { _select: this, allOptions: allOptions}, filter);
    		$(input).one('focus', inputFocus);
    		//$(input).bind('blur', inputBlur);
    		//$(table).bind('mouseenter', {input: input}, Enter);
    		//$(table).bind('mouseleave', {input: input}, Leave);
    	});
    	return this;
    }
     
    })(jQuery);
    mais j'aimerai bien apprendre des techniques pour créer des plugin jQury si vous avez des ressources se serai un grand plaisir.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Héritage de méthodes
    Par lvr dans le forum Langage
    Réponses: 12
    Dernier message: 12/09/2007, 09h20
  2. héritage et méthode abstraite
    Par troussepoil dans le forum C++
    Réponses: 13
    Dernier message: 30/03/2007, 09h51
  3. Exceptions, héritage et méthodes virtuelles
    Par Nuwanda dans le forum C++
    Réponses: 13
    Dernier message: 23/05/2006, 12h06
  4. Réponses: 8
    Dernier message: 04/06/2004, 09h13
  5. [Héritage] Redéfinition méthode
    Par petit-ourson dans le forum Langage
    Réponses: 9
    Dernier message: 06/05/2004, 16h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo