Z>Пример с алертом был утрирован СПЕЦИАЛЬНО!
И именно поэтому он некорректен. ПОтому что это — синтетический пример, который ничего не доказывает.
Я привел тебе гораздо более реальный пример, который ты благополучно проигнорировал.
Тултип в 36КБ против jQuery +
тултип в 29.7КБ
Или тот же пример с $('a.ajax')...
Эти примеры ты активно игнорируешь, хотя они показывают, что код ручками проигрывает коду, основанному на jQuery.
Z> Чтобы продемонстрировать избыточность кода задаче. Очень похожие утрированные примеры (подвесить клик на якорь или добавить класс и т.п.) используются в большинстве туториалов. Общий посыл при этом — смотрите и учитесь, как просто и легко можно это сделать по сравнению с чистым javascript. Хотя на самом деле (вообще не понимаю, как можно об этом ещё и спорить) отдельная задача и даже несколько связанных задач решаются руками проще/оптимальнее/качественнее, чем с использованием большого избыточного (априори всегда избыточного) пакета. Тем более чужого. Тем более javascript-пакета. Тем более в исходники которого, как оказалось, никто и не смотрит.
Если хочешь, я напишу статью "Advanced uses of jQuery". Хотя она никому нафиг не сдалась, потому что через два дня после работы с jQuery люди сами начинают писать код любой сложности. Да в
туториалах можно найти полезную инорамцию, идущую дальше, чем простые примеры (например,
My First ExtJS DataGrid).
А насчет отдельных задач...
Задача 1. У меня на странице есть ссылки с классом .ajax. Необходимо сделать так, чтобы при щелчке на эти ссылки аяксом подгружалась страница, находящаяся по адресу в href соответствующей ссылки, а содержимое той страницы загружалось в элемент с id="ajax_result" (например, нечто похожее реализовано в
этом тултипе и у меня
на странице).
Показываю в последний раз

:
<a href="/test1.html" class="ajax">Ссылка 1</a>
<a href="/test2.html" class="ajax">Ссылка 2</a>
// У меня на странице есть ссылки с классом .ajax
$("a.ajax")
.click( // Необходимо сделать так, чтобы при щелчке на эти ссылки
function(){
$.get( // аяксом подгружалась страница
$(this).attr("href"), //находящаяся по адресу в href соответствующей ссылки
callback
)
}
);
function callback(result){
$("#ajax_result").append(result); // а содержимое той страницы загружалось в элемент с id="ajax_result"
}
Задача 2. Изменить задачу 1 так, чтобы тоже самое работало для всех ссылок в элементе с id="other":
<div id="other">
<a href="/test1.html">Ссылка 1</a>
<a href="/test2.html">Ссылка 2</a>
</div>
$("#other a")... // остальной код такой же
Ваш ход. Можно использовать "чистый" JS или самописные фреймворки.
Z>Но если количество и объём многомерных задач таковы, что мы уже подходим к раскрытию возможностей jQuery по-максимому, то фреймворк можно (заметьте, я не выступаю против, я говорю, что можно) использовать, на то он и большой пакет.
Просто таки гигантский пакет. Целых 20КБ кода
Z>Но в этом смысле сразу возникает парадоксальная ситуация — программист делает большой суръёзный javascript-проект, что предполагает всё-таки владение предметом, и при этом он не в состоянии предложить свои собственные решения, которые бьют строго в заданную оптимальную точку.
Почему считается, что оптимальная точка — это, например, умение написать кроссбраузерный аякс, а не, например,
taconite на основе уже готового и кроссбраузерного аякса и готовой кроссбраузерной выборки по селекторам? Я лучше напишу taconite, чем в очередной раз заново писать низкоуровневый код.
Z>Почему так происходит? Само собой, ни один из нас не признается в своей слабой подготовке или в нехватке времени, или в нехватке браузеров, или в недостатке кросс-браузерного опыта, или в ещё в чём, не знаю
Я, по-моему, уже не раз говорил, что наша задача — это не разрабатывать свой собственный javascript-фреймворк, а разрабатывать продукт.
Яркий пример.
Wordpress с версии 2.2
используют jQuery. Почему они не написали свой собственный фреймворк? Потому что их задача — выпустить оптимальный кросс-браузерный форумный пакет, а не разрабатывать велосипеды. У них есть задачи поважнее и поинтереснее, чем бороться с браузерами и тестировать Javascript на двух десятках платформ. Им проблем с кросс-браузерным CSS хватает.
Z>Заступайтесь на здоровье, друзья, но только в узком профессиональном мире фреймворков, сражаясь там в войне с Prototype.js или ещё с кем, но не учите мир жить. Не гоните волну на javascript, не отталкивайте он него людей, не учите псевдо-коду, не учите плохому псевдо-коду, вместо книг "Learning jQuery" пишите книги "Learning Javascript"...
Расскажу сказочку. Из мира прикладного программирования. Есть такая вещь, как windows api, благодаря которому, ты, например, под виндой можешь открыть окно и читать это сообщение.
Окошки в windows api требуют кучи
кода:
NT WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
MSG Msg;
HWND hWnd;
WNDCLASSEX WndClsEx;
// Create the application window
WndClsEx.cbSize = sizeof(WNDCLASSEX);
WndClsEx.style = CS_HREDRAW | CS_VREDRAW;
WndClsEx.lpfnWndProc = WndProcedure;
WndClsEx.cbClsExtra = 0;
WndClsEx.cbWndExtra = 0;
WndClsEx.hIcon = static_cast<HICON>(LoadImage(hInstance,
MAKEINTRESOURCE(IDI_ANATWND),
IMAGE_ICON,
32,
32,
LR_DEFAULTSIZE));
WndClsEx.hCursor = LoadCursor(NULL, IDC_ARROW);
WndClsEx.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
WndClsEx.lpszMenuName = NULL;
WndClsEx.lpszClassName = ClsName;
WndClsEx.hInstance = hInstance;
WndClsEx.hIconSm = static_cast<HICON>(LoadImage(hInstance,
MAKEINTRESOURCE(IDI_ANATWND),
IMAGE_ICON,
16,
16,
LR_DEFAULTSIZE));
// Register the application
RegisterClassEx(&WndClsEx);
. . .
return 0;
}
Потом всякие плохие дяди, которые не хотели писать эти кучи кода вручную, начали придумывать разные фреймворки, такие как
wxWidgets,
Qt и даже
MFC и
WTL или
HTMLayout. Все для того, чтобы можно было написать что-то вроде
MainWindow mainWin;
mainWin.show();
И, не поверишь, люди мало того, что эти фреймворки
используют, но даже в код им не смотрят. Почему? Потому что осознание того, что ты можешь быстро и эффективно создать крутое приложение гораздо важнее осознания того, что ты можешь потратить кучу времени, сил и денег, чтобы сделать... в общем-то тот же фреймворк.
В веб-программировании — то же самое. Почему бы не взять уже готовый, да еще и бесплатный, но дествительно хороший и быстрый фреймворк и сосредоточится на поставленных передо мной задачах, а не писать все то же самое с нуля? Только потому что оно "фи" чужое?

Странные подходы. С такими подходами мы бы давно в DOS'е сидели...
Z>Не знаю, что до меня пытаются тут донести, но про портянки я уже понял, это типичный такой наезд в стиле "лучше уже не бывает, не выёживайся", а иначе — докажи. Во-первых, не судите по себе
, а во-вторых, отказывать в профессионализме тем, кто не использует js-фреймворки в своей программистской работе (или большую часть работы делает руками), по меньшей мере неуважительно по отношению к вашим же коллегам. Люди пишут прекрасный код. Люди пишут ужасный код. Так было, есть и будет.
Я никому ни в чем не отказываю. Но, используя jQuery, можно направить свою энергию на решение гораздо более интересных задач, чем написание низкоуровневого кода.
D>>А потом еще копипайстить из одного проекта в другой — если снова заходите использовать...
Z>Эти доводы я принимаю и не принимаю одновременно, согласитесь, что всё зависит от ситуации. Компании "A", построившей все свои проекты на базе JSLibrary №13 ваши jsQuery-наработки даром не нужны. Но, замечу, всегда будет нужен ваш опыт в отрыве от любой либы...
Отучаемся говорить за всех. Мне известно много случаев, когда компания "А" с радостью переходила на грамотный фреймворк, потому что избавлялась от кучи геморроя и головной боли.
D>>Странные посты против фрейворков вообще, вы вот и на сервер-сайд наверное никаких фреймворков не используете, сами GET/POST валидируете и популируете, постинг каждой формы по новой все этапы реализуете, различные утилитные функции, велосипеды изобретаете на каждом шагу наверное...
Z>Это посты не против либ как таковых вообще, пользуйтесь, если нравится, а посты против того, что кто-то имеет смелость сравнивать javascript vs. jQuery или javascript-программирование vs. псевдо-программирование.
Что тако псевдо-программирование?
Например,
taconite — это псевдо-программирование? Или, скажем,
Interface. Или, скажем,
Ext?