Na swoim blogu wykorzystuje fajne i proste w użyciu rozszerzenie do jQueryidTabs. Umożliwia ono, tworzenia zakładek za pomocą listy punktowanej i powiązanych z nią tagów div. Na stronie twórcy można znaleźć parę prostych przykładów wykorzystania tego pluginu.

U mnie na blogu wykorzystuje to by rozdzielić komentarze od trackbacks/pingbacks. Jednakże z nieznanych mi powodów musiałem zmodyfikować kod JavaScript od idTabs.

Mianowicie na przeglądarkach Chrome i IE, gdy wykorzystywałem idTabs, wyskakiwał mi błąd JavaScript przy próbie ustawienia stylu na obiekcie Document. W FireFox nie byłem wstanie tego błędu z reprodukować – wszystko działało poprawnie. Co gorsza idTabs (strona z przykładami) działała poprawnie zarówno na IE jak i na Chrome. Czyli coś musiało być nie tak u mnie. W którymś momencie stwierdziłem, że pora wykorzystać Developers Toolbar i przeprowadziłem debug kodu JavaScript. Błąd znalazłem szybko, ale dalej nie wiem dlaczego on istnieje. Poniżej zmodyfikowana wersja fragmentu kodu idTabs, która zastosowałem do testów:

var aList = [];
var idList = [];

$("a", tabs).each(function() {
	if (this.href.match(/#/)) {
		aList.push(this);
		idList.push("#" + this.href.split('#')[1]);
	}
});

if (s.click && !s.click.apply(this, [id, idList, tabs, s]))
	return s.change;

for (i in aList) {
	$(aList[i]).removeClass(s.selected);
}
for (i in idList) {
	alert(i);
	$(idList[i]).hide();
}

Okazało się, że alert, zwracał mi wartości 0, 1 i indexOf (sic!). Zamieniłem więc kod na taki:

var aList = [];
var idList = [];

$("a", tabs).each(function() {
	if (this.href.match(/#/)) {
		aList.push(this);
		idList.push("#" + this.href.split('#')[1]);
	}
});

if (s.click && !s.click.apply(this, [id, idList, tabs, s]))
	return s.change;

for (i in aList) {
	$(aList[i]).removeClass(s.selected);
}
for (i in idList) {
	if( i != "indexOf")
		$(idList[i]).hide();
}

I już wszytko płynnie chodzi. Jednakże nie znam przyczyny dlaczego tak mi się działo.

Jeżeli ktoś ma pomysł dlaczego tak mogło się dziać, niech się nim podzieli proszę. Nie lubię nie wiedzieć dlaczego pewne rzeczy się dzieją – nie daje mi to spokoju :)