jQuery:
function select(elem, f) {
elem.toggleClass('tab-selected', f);
$('#' + elem.data('link')).toggle(f);
}
$('.tab-button').each(function () {
select($(this), $(this).hasClass('tab-selected'));
$(this).click(function () {
select($(this).closest('.tab-header').find('.tab-selected'), false);
select($(this), true);
});
});
Google Closure:
function select(elem, f) {
goog.dom.classes.enable(elem, 'tab-selected', f);
goog.style.showElement(goog.dom.getElement(goog.dom.dataset.get(elem, 'link')), f);
}
goog.array.forEach(goog.dom.getElementsByClass('tab-button'), function (cmdTab) {
select(cmdTab, goog.dom.classes.has(cmdTab, 'tab-selected'));
goog.events.listen(cmdTab, goog.events.EventType.CLICK, function () {
goog.array.forEach(goog.dom.getElementsByClass('tab-selected'), function (cmdCurrTab) { select(cmdCurrTab, false); });
select(cmdTab, true);
});
});
Несмотря на то, что я категорически не согласен с
известной явно проплаченной статьёй, где автор пытается двумя с половиной багами доказать, что Closure трогать не стоит, и jQuery так-то ещё то говно, но всё же не стоит.
UPD. Собсно, мне прояснили, что
http://jsperf.com/google-closure-vs-jquery-dom/3