qtip dla wszystkich elementów pasujących do selektora jQuery

0

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.

  1. 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 daje false, a dla innych daje true, czyli plugin myśli, że tooltip jest już widoczny.
  2. Jeśli jako zawartość tooltipa zamiast content: this.$el dam content: this.$el.clone() lub content: 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?

0

Dzieje się tak, bo qtip wycina całą zawartość elementu podanego w "content". Spróbuj:

content: this.$el.clone(),
0

Widzę, że nie przeczytałeś pierwszego posta w całości (stąd minus). Dokładnie pisałem o clone(). Poza tym, tu akurat jest na plus, że element jest wycinany, bo służy tylko tooltipowi i jest zbędny gdzie indziej.

Znalazłem przyczynę i co ciekawe, nie była związana bezpośrednio z kodem przedstawionym powyżej. Ten podwidok odpalał kolejny, który odpalał kolejny - nieistniejący w danym kontekście. Niestety, nie sypało to żadnym ostrzeżeniem tylko po cichu się wykładało.

1 użytkowników online, w tym zalogowanych: 0, gości: 1