Наскоро ми се наложи в едни проект да има малко каре където се сменят през определен период от време няколко div елемента. По принцип съм фен на Prototype, но за този проект това щеше да е всичкия JavaScript и малко безсмислено ми се виждаше да слагам целия Prototype. И затова реших да пробвам йQuery, която е доста популярна напоследък. И затова, написах това парченце код, целта беше да е малко, затова е малко неразбираемо.
$(document).ready(function(){
var interval = setInterval(function(){
var next = $('#news .current').css('display', 'none').removeClass('current').next();
(next.length ? next : $('#news .article').eq(0))
.css('display', 'block').addClass('current');
}, 5000);
});
Синтаксиса е на JQuery е доста интересен и лесно се свиква с него, въпреки че има 2-3 места където се различава от Prototype.
След като направи JQuery версията си викам: “Я да видим колко ще е различна Prototype версията “, и написах това:
document.observe('dom:loaded', function(){
new PeriodicalExecuter(function(){
var news = $('news');
(news.down('.current').hide().removeClassName('current').next() || news.down('.article'))
.show().addClassName('current');
}, 5);
});
Няма голяма разлика като PeriodicalExecuter можи да си е прост setInterval. Разликите който усетих най-осезателно са че JQuery обекта е колекция от обекти и всички операции който се правят се правят за колекцията. Докато Prototype просто допълва native обектите и прави кода да изглежда като все едно се работи със стандартното API на JS.
Кое ви се вижда по-нормално според мен е въпрос на навик и стил.
p.s. Тази статия от Дъстин Диаз, доста добре нагледно показва как работи JQuery от вътре. Въпреки че статията не за jquery, основния принцип на работа на jquery е подобен (До колкото знам).