J'utilise la liste avec image du jqueryui:selectmenu.
Je voudrais que l'image reste après la sélection, mais je n'y arrive pas.
Vous trouverez mon code là :
http://jsfiddle.net/eko23o1w/
Mais je n'y arrive pas.
Merci pour votre aide
J'utilise la liste avec image du jqueryui:selectmenu.
Je voudrais que l'image reste après la sélection, mais je n'y arrive pas.
Vous trouverez mon code là :
http://jsfiddle.net/eko23o1w/
Mais je n'y arrive pas.
Merci pour votre aide
J'ai repris le code de la démonstration "Selectmenu with custom avatar".
Le code fonctionne, mais je ne suis pas satisfait. C'est du bricolage, il y a peut-être une meilleure solution.
Code CSS : 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 h2 { margin: 30px 0 0 0 } fieldset { border: 0; } label { display: block; } select { width: 200px; } option.avatar { background-repeat: no-repeat !important; padding-left: 20px; } .avatar .ui-icon { background-position: left top; }
Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 <h2>Selectmenu with custom avatar 16x16 images as CSS background</h2> <fieldset> <label for="people">Select a Person:</label> <select name="people" id="people"> <option value="1" data-class="avatar" data-style="background-image: url('http://www.gravatar.com/avatar/b3e04a46e85ad3e165d66f5d927eb609?d=monsterid&r=g&s=16');">John Resig</option> <option value="2" data-class="avatar" data-style="background-image: url('http://www.gravatar.com/avatar/e42b1e5c7cfd2be0933e696e292a4d5f?d=monsterid&r=g&s=16');">Tauren Mills</option> <option value="3" data-class="avatar" data-style="background-image: url('http://www.gravatar.com/avatar/bdeaec11dd663f26fa58ced0eb7facc8?d=monsterid&r=g&s=16');">Jane Doe</option> </select> </fieldset>
Code JavaScript : 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 $( function(){ // forme abrégée de $(document).ready(function( $.widget( "custom.iconselectmenu", $.ui.selectmenu, { _renderItem: function( ul, item ) { var li = $( "<li>", { "text" : item.label } ); if ( item.disabled ) { li.addClass( "ui-state-disabled" ); } $( "<span>", { "style" : item.element.attr( "data-style" ), "class": "ui-icon " + item.element.attr( "data-class" ) }).appendTo( li ); return li.appendTo( ul ); } }); $( "#people" ) .iconselectmenu({ "select" : function( event, ui ){ $( "span.ui-selectmenu-text" ).append( $( "span", event.currentTarget ).clone() ); } }) .iconselectmenu( "menuWidget") .addClass( "ui-menu-icons avatar" ); });
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.)
Bonjour,
Je viens de trouver une solution (avec de l'aide sur forum jquery ui)
Je suis dans le cas particulier, où chaque option de mon select et soit un text soit une image.
Code html : 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 <script type="text/javascript"> $(function () { $.widget("custom.TFOiconSelectImg", $.ui.selectmenu, { _renderItem: function (ul, item) { var li = $("<li>", { html: item.element.html() }); var attr = item.element.attr("data-style"); if (typeof attr !== typeof undefined && attr !== false) { $("<span>", { style: item.element.attr("data-style"), "class": "ui-icon TFOOptlstFiltreImg" }).appendTo(li); } return li.appendTo(ul); } }); $("#people") .TFOiconSelectImg({ create: function (event, ui) { var widget = $(this).TFOiconSelectImg("widget"); widget.attr("style", $(this).children(":first").data("style")); }, change: function (event, ui) { $(this).TFOiconSelectImg("widget").attr("style", ui.item.element.data("style")).addClass("TFOOptlstFiltreImg") //$("span.ui-selectmenu-text").append($("span", event.currentTarget).clone()); //alert($(this).val()); } }).TFOiconSelectImg("menuWidget").addClass("ui-menu-icons customicons"); }); </script> <select name="people" id="people" class="TFOlstFiltreImg TFOfilter lstfilter"> <option value="" data-style="background-image: url('/Images/vide.png');" selected="selected">TOUS</option> <option value="" data-style="background-image: url('/Images/vide.png');">SANS</option> <option value="/Images/imgres.jpg" data-style="background-image: url('/Images/imgres.jpg');"> </option> <option value="/Images/imgres.png" data-style="background-image: url('/Images/imgres.png');"> </option> </select>
Dans chaque option, il est important d'avoir soit une image vide et le text
ou l'image et " "
Code css : 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 .TFOOptlstFiltreImg { background-repeat:no-repeat; background-size: 24px 24px; width:100px; } .ui-widget { font-size: 1em; } .ui-selectmenu-menu .ui-menu.customicons .ui-menu-item { padding: 0.5em 0 0.5em 2.1em; background-repeat: no-repeat; } /*Agrandir sinin 16px par defaut*/ .ui-selectmenu-menu .ui-menu.customicons .ui-menu-item .ui-icon { height: 24px; width: 24px; top: 0.1em; }
oups, faut ajouter un truc dans le create
Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 create: function (event, ui) { var widget = $(this).TFOiconSelectImg("widget"); widget.attr("style", $(this).children(":first").data("style")).addClass("TFOOptlstFiltreImg"); },
J'ai aussi fait une autre solution en partant de l'idée d'ajout d'un span comme proposé ci-dessus : http://stackoverflow.com/questions/2...25934#27925934
Partager