În acest post o să vă arăt flexibilitatea lui jQuery care vine în ajutorul developerului pentru a simplifica anumite etape ale procesului de dezvoltare.
Despre jQuery în câteva cuvinte
Ce fel de tooltip ne dorim?
Mi-am propus să realizez un tooltip simplu şi eficient pentru lamuriri adiţionale în completarea unui formular. În principiu am 2 soluţii de a realiza apariţia tooltip-ului:
Dintre cele 2 opţiuni eu am ales-o pe cea de-a doua pentru ca îmi place să nu pun userul să facă acţiuni în plus pentru a vedea nişte informaţii pe care le doreşte (doar de-asta trăim în vremurile în care cuvântul de ordine în webdevelopment este uzabilitate). Ne dorim ca user-ului să-i fie cât mai uşor să utilizeze toate funcţiile site-ului.
Realizarea tooltipului cu ajutorul jQuery
În primul rând trebuie să ne punem scriptul să ruleze după încărcarea completă a paginii.
$(document).ready(function () { });
Pentru realizarea apariţiei tooltip-ului la mouseover vom folosi proprietatea obiectului object.mouseover(); iar selecţia o vom face după un pattern simplu: "selectează-mi toate imaginile care au clasa 'tooltip' ". În consecinţă codul nostru va arăta în felul următor.
$("img.tooltip").mouseover( /* $("img.tooltip") este selectorul nostru care face selectia imaginilor care au clasa 'tooltip' */ function (event) { });
În pasul următor vom lua de pe imaginea noastră atributul alt a cărui valoare o vom afişa cu ajutorul tooltip-ului. Pentru asta va trebui să facem un <div> în care să afişăm informaţia explicativă. Vom avea nevoie şi de cunoştinţe de CSS pentru a putea stiliza obiectul şi pentru a-l putea duce în poziţia dorită de afişare. În cazul meu, CSS-ul este aşa:
#tooltip { position: absolute; font-family: Verdana, sans-serif; font-size: 10px; max-width: 150px; border: 1px solid #91C2DC; z-index: 10000; color: #333333; background: url('information.png') center left no-repeat #FFFFFF; margin: 10px 5px 5px 10px; padding: 20px 3px 3px 3px; }
Să vedem cum arată Javascriptul pentru cele descrise mai sus:
$("img.tooltip").mouseover( function (event) { var text = this.alt; /* tinem continutul proprietatii alt in variabila 'text' */ x = event.pageX+10; /* sa mutam tooltipul putin mai la dreapta ca sa nu fie acoperit de cursor */ y = event.pageY+10; /* si putin mai jos... */ $("body").append(" <div id='tooltip'>"+text+"</div> "); /* mai intai facem un div [asta reprezentand alternativa jQuery la DOM] */ $("#tooltip").css("left", x).css("top", y); /* si ne mai ramane doar sa-l mutam langa cursor */ } );
OK, am făcut tooltip-ul, dar va trebui să-l distrugem la acţiunea object.mouseout(); şi cu asta suntem aproape gata.
$("img.tooltip").mouseout( function (event) { $("#tooltip").remove(); /* cand se intampla mouseout distrugem div-ul */ } );
În funcţie de preferinţe mai rămâne doar să aranjăm totul într-o funcţie şi s-o folosim. Pentru asta eu am făcut un exemplu si de aici puteţi downloada scriptul complet.
Ceea ce tocmai am realizat e o variantă simplă şi nu se vrea în nici un caz o concurenţă la scripturile de tooltip existente, ci o aplicaţie a unor simple cunoştinţe de jQuery.
Orice părere, sugestie sau "reclamaţie" e bine-venită (folosiţi formularul din josul paginii)!
10 Responses for "jQuery tooltip"
Nice tutorial!
Keep up the good work!
thanks man
this helped me in my work
Un “twist” interesant ar fi sa pui in ALT un id si sa faci un request de tip GET catre un PHP cu id-ul ca parametru. Astfel poti popula tooltipul cu informatii mai variate sa cu orice altceva ai mai avea nevoie.
Dupa cum spuneai exista deja variante de tooltipuri bazate pe jquery care sunt foarte bune, ziceam doar o chestie la care ma gandisem de curand.
Cheers.
@Brayn, într-adevăr, ar rezulta un tooltip destul de interesant în acest fel, poate o să am timp azi să detaliez şi aşa ceva. Ideea iniţială era să explic cât de mult îmi stă în putinţă pentru ca orice începător în Javascript să aibă curajul să încerce jQuery. După cum am spus, se vrea un exerciţiu, o aplicaţie practică simplă a jQuery
O să trec şi la nişte lucruri mai “interesante” când voi avea timp
E f interesant…o singura problema.
In IE apare si textul alternativ pentru imagini si se suprapune peste tooltip.
Salut!
Eu l-am testat pe IE 7 si apare ok, deci presupun ca problema e la IE6. Oricum, ideea mea initiala era sa fac lucrul asta cu jQuery, nu atat de mult CSS-ul [care e la libera alegere a fiecaruia]
Oricum, I don’t give love to IE6! IE6 poate sa moara incet si chinuitor. Cred ca orice webdeveloper isi doreste lucrul asta mai mult ca orice.
Salutare,
Incearca sa te folosesti si de eventul “mousemove” si “rescrie” css-ul … o sa fie un tooltip mai ‘fancy’
Toate bune.
Salut!
Mersi de sfaturi; eu initial am scris acest post ca sa le arat tuturor ca jQuery nu e un monstru ascuns sub pat si ca se pot face lucruri relativ interesante cu ajutorul lui si destul de repede si simplu. 
In esenta n-am incercat sa ofer o solutie completa, doar sa arat ca se poate face. Poate cand o sa am timp o sa fac o solutie completa.
Indeed, jQuery (jkely, cum ii spune un coleg) este unul dintre cele mai complete si mai simple de utilizat framework-uri javascript. De cateva luni am schimbat tot sistemul, gasind adaptari la cel vechi cu mult mai putin cod scris, so: “write less do more”.
[...] exemplu aici, data ar merge [...]
Leave a reply