Jednoduchý sprievodca vytvorením tooltip rozšírenia. Plugin poskytuje možnosť časového oneskorenia a odsadenia z ľava a z hora.
Najskôr si pripojíme na odkaz s class tooltip udalosť <a href="/dokumentacia/mouseenter">mouseenter</a>, tá sa aktivuje akonáhle sa myš dostane nad nami zvolený element pri inicializácii.
$('a.tooltip')
.bind('mouseover', function(e)
{
tooltext = $(this).attr('title');
$(this).removeAttr('title');
tooltip_timer = setTimeout(function()
{
$('')
.hide()
.appendTo('body');
$("#tooltip")
.text(tooltext)
.css('position', 'absolute')
.css({
top: e.pageY + nastavenia.yOffset,
left: e.pageX + nastavenia.xOffset
})
.show();
}, nastavenia.delay);
})
Ako môžeme vidieť uložíme si title nášho odkazu pod premennú tooltext. Potom odkazu odstránime title, to z dôvodu aby sa nám nezobrazil pôvodný systémová bublina. Vytvoríme si časovač a priradíme mu čas za koľko sa ma funkcia v ňom vykonať. Vo funkcií už vidime, že sa vytvorí náš tooltip, ktorý sa hneď skryje, pridá do body, vloží sa text z premennej tooltext, nastaví sa position na absolute, nastavia sa súradnice a nakoniec sa tooltip zobrazí.
Teraz keď už máme mouseenter pripojme si teraz <a href="/dokumentacia/mousemove">mousemove</a>, čo nám vylepší náš tooltip aby bublina nasledovala kurzor.
.bind('mousemove', function(e)
{
$('#tooltip')
.css({
top: e.pageY + nastavenia.yOffset,
left: e.pageX + nastavenia.xOffset
});
})
Ako vidíte, nerobí to nič iné ako to, že pri pohnutí myšou nad našim objektom zmení polohu tooltipu.
Aby bol náš tooltip kompletný musíme pridať ešte <a href="/dokumentacia/mouseout">mouseout</a>, ktorý nám pri opustení nášho odkazu po sebe pozametal.
.bind('mouseout', function()
{
$('#tooltip').remove();
clearTimeout(tooltip_timer);
$(this).attr('title', tooltext);
});
Odstráni náš tooltip, vyčistí časovač a nakoniec späť pridá atribút title aby sa proces mohol opakovať.
Aby sme ale z nášho kódu mali plugin musíme to celé zaobaliť a pridáme aj nejaké preddefinované nastavenia. Celý náš tooltip plugin bude vo finále vyzerať takto:
(function($)
{
$.fn.tooltip = function(nastavenia)
{
var predvolene =
{
delay: 1500,
xOffset: 15,
yOffset: 15
};
var nastavenia = $.extend(predvolene, nastavenia);
var tooltext = '';
return this.each(function()
{
object = $(this);
var tooltip_timer;
object
.bind('mouseover', function(e)
{
tooltext = $(this).attr('title');
$(this).removeAttr('title');
tooltip_timer = setTimeout(function()
{
$('')
.hide()
.appendTo('body');
$("#tooltip")
.text(tooltext)
.css('position', 'absolute')
.css({
top: e.pageY + nastavenia.yOffset,
left: e.pageX + nastavenia.xOffset
})
.show();
}, nastavenia.delay);
})
.bind('mousemove', function(e)
{
$('#tooltip')
.css({
top: e.pageY + nastavenia.yOffset,
left: e.pageX + nastavenia.xOffset
});
})
.bind('mouseout', function()
{
$('#tooltip').remove();
clearTimeout(tooltip_timer);
$(this).attr('title', tooltext);
});
});
}
})(jQuery);
Zaobalenie so sebou prinieslo aj jemné modifikácie nášho skoršieho kódu. Napríklad object = $(this); nám uloží náš objekt. Pre ďalšie modifikácie ohľadom zapúzdrenia do pluginu odporúčam prečítať skôr napísaný návod Vytvorte si svoj prvý jQuery plugin.
A inicializácia bude vyzerať takto:
$(document).ready(function()
{
$('a.tooltip').tooltip();
});
Alebo ak chceme pozmeniť niektoré nastavenia tak:
$(document).ready(function()
{
$('a.tooltip').tooltip(
{
delay: 500,
xOffset: 15
});
});
Nakoniec ešte vytvoríme CSS súbor kde si zvolíme vzhľad, v ukážke sme zvolili niečo takéto:
a.tooltip
{
cursor: help;
}
#tooltip
{
background-color: #FFFFFF;
border: 3px solid #FF0000;
padding: 2px 4px;
-moz-border-radius: 3px;
-webkit-border-radius: 3px;
border-radius: 3px;
}
Nakoniec, vyskúšajte ukážku ako to vo finále vyzerá. Základnú kostru teda máte, takže môžete si kedykoľvek vytvoriť niečo zložitejšie.
Zatiaľ žiadne komentáre
© 2009 Shaddow
hosting od VIPHosting