Jest sobie taki plugin do jQuery dodający możliwość wyświetlania tooltipów: http://qtip2.com/
Natknąłem się na pewien problem, chciałem nawet się zarejestrować na ich forum by zadać pytanie, ale dla nicka Marooned
i mojego maila (w prywatnej domenie) dostałem na twarz:
Your details match those of a known spammer, therefore you have been disallowed registration.
Teges...
Wracając do problemu. Mam w pewnym widoku taki oto kod:
this.$d('action', 'tooltip').each(function(index, element) {
var el = $(element);
//...
new MojProjekt.factory.view('tooltips.' + el.data('tooltip'), model, undefined, {parentView: el});
});
Co powoduje stworzenie nowego widoku dla każdego złapanego elementu. W konstruktorze takiego widoku mam:
init: function() {
this.options.parentView.qtip({
content: this.$el,
//...
Gdzie this.$el to dany widok - element jQuery.
Sęk w tym, że tooltip pojawia się tylko dla pierwszego elementu z serii. Jeśli wspomniany this.$d('action', 'tooltip').each
odpali się 2x i za każdym razem złapie 3 elementy, to tooltip pojawi się dla pierwszego i czwartego.
Teraz ciekawostki.
- Tooltip tworzy się w DOMie dla każdego elementu. Ot, wyświetla się tylko dla pierwszego. Krótki debug wykazał, że w kodzie kod
visible = tooltip[0].offsetWidth > 0
dla pierwszego elementu dajefalse
, a dla innych dajetrue
, czyli plugin myśli, że tooltip jest już widoczny. - Jeśli jako zawartość tooltipa zamiast
content: this.$el
damcontent: this.$el.clone()
lubcontent: this.$el.html()
, to wyświetlają się wszystkie tooltipy. Sęk w tym, że pod this.$el podczepiana jest "magia", więc .clone()/.html() powoduje, że tooltip jest niepełny - dlatego chcę użyć konkretnej referencji a nie jakichś klonów.
Pytanie. Co skopałem czy może to jednak jakiś tajny bug?