Select Customizer: a jQuery plug-in
Pubblicato il 12/09/2008 nelle categorie: webdesign
Un problema davvero fastidioso per un webdesigner è la cattiva (quando non impossibile) applicazione degli stili CSS alle select nei form. Fortunatamente JavaScript ci viene incontro, e grazie al lavoro fatto dagli australiani di Ace Web Design e all’aiuto del mio amico e collega Michele, vi presento un plug-in per jQuery che permette di personalizzare (e animare) una select in tutti i browser.
In sostanza lo script sostituisce il campo <select> con un campo nascosto e una serie di div, successivamente al cambiare delle opzioni viene valorizzato il campo nascosto e quindi viene passato al form come un normale campo.
Scarica lo script con una spiegazione e alcuni esempi, oppure guarda il codice:
$.fn.SelectCustomizer = function(){
// Select Customizer jQuery plug-in
// based on customselect by Ace Web Design http://www.adelaidewebdesigns.com/2008/08/01/adelaide-web-designs-releases-customselect-with-icons/
// modified by David Vian http://www.ildavid.com
return this.each(function(){
var obj = $(this);
var name = obj.attr('id');
var id_slc_options = name+'_options';
var id_icn_select = name+'_iconselect';
var id_holder = name+'_holder';
var custom_select = name+'_customselect';
obj.after("<div id=\""+id_slc_options+"\"> </div>");
obj.find('option').each(function(i){
$("#"+id_slc_options).append("<div title=\"" + $(this).attr("value") + "\" class=\"selectitems\"><img src=\"" + this.title + "\" /><span>" + $(this).html() + "</span></div>");
});
obj.before("<input type=\"hidden\" value =\"\" name=\"" + this.name + "\" id=\""+custom_select+"\"/><div id=\""+id_icn_select+"\">" + this.title + "</div><div id=\""+id_holder+"\"> </div>").remove();
$("#"+id_icn_select).click(function(){
$("#"+id_holder).slideToggle(200);
});
$("#"+id_holder).append($("#"+id_slc_options)[0]);
$("#"+id_holder+ " .selectitems").mouseover(function(){
$(this).addClass("hoverclass");
});
$("#"+id_holder+" .selectitems").mouseout(function(){
$(this).removeClass("hoverclass");
});
$("#"+id_holder+" .selectitems").click(function(){
$("#"+id_holder+" .selectedclass").removeClass("selectedclass");
$(this).addClass("selectedclass");
var thisselection = $(this).html();
$("#"+custom_select).val(this.title);
$("#"+id_icn_select).html(thisselection);
$("#"+id_holder).slideToggle(250)
});
});
}
























Tags: javascript, jQuery