Форум поддержки «ЖивыеФорумы.ру»

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Форум поддержки «ЖивыеФорумы.ру» » Новые возможности форумов » Перевод руководства Джека Борна "15 Days Of jQuery"


Перевод руководства Джека Борна "15 Days Of jQuery"

Сообщений 1 страница 16 из 16

1

Публикую перевод руководства Джека Борна "15 Days Of jQuery".
Само руководство состоит из небольших заметок решающих какую-нибудь конкретную задачу.

0

2

День 1й: Быстрее чем window.onload

Window.onload() - это рабочая лошадка традиционного кода javascript, используется программистами годами, чтобы быстро запустить что-то на стороне клиента, как только страница загрузится.

Но иногда ожидание загрузки страницы бывает долгим.

Несколько больших картинок при загрузке покажут, что Window.onload может быть очень медленным. Поэтому когда я программирую web-приложения для интернета, я должен иметь что-то быстрее.

Беглый взгляд на возможности обойти windows.onload привели меня к некоторому коду от Brother Cake. Если вам нужен только быстрый старт javascript кода, тогда это стоит попробовать.

Но если вы собираетесь использовать DOM Javascript, тогда стоит попробовать Jquery.

JQuery имеет удобную небольшую функцию, которая запускает ваш javascript, как только DOM модель будет готова… и это происходит пред тем, как страница будет загружена полностью.

Код:
$(document).ready(function(){
// Your code here...
});

Вы можете использовать это для любого javascript, который захотите. Данный код не зарезервирован за стилем программирования jQuery. И нет ничего страшного, чтобы jQuery запускала несколько функций сразу. Подобно многим init() функциям, которые Вы видели раньше… только немного быстрее.

Вы увидите, что этот код используется снова и снова в примерах, которые я даю в “15 дней с jQuery”

0

3

День 2й: разлиновка таблиц делается легко

Я приготовил пошаговую демонстрацию (http://15daysofjquery.com/examples/zebra/) как написать нормальный яваскрипт и свести его к пяти строкам или менее. Одновременно вы увидите, как я делаю это гибче и полезней.

Посмотрите на сайт Matthew Pennell “Расскрасьте таблицы как в OpenOffice” (http://www.thewatchmakerproject.com/jou … the-oo-way). Его код чистый и краткий. И он сделал лучше чем предыдущая статья от A List Apart (http://www.alistapart.com/articles/zebratables)

Но с помощью jQuery, я думаю, мы можем сделать лучше.

Главная идея - сделать полоски на табличке и смену цвета бэкрграунда каждого ряда, когда курсор будет над ним.

Как я упоминал, код Mathew достаточно хорош. Он показывает уровень опыта, который большинство частично занятых гиков могут найти трудным для достижения.

Это ни в коем случае не трудно для тех, кто только начал закатывать рукава и изучать javascript.

Как jQuery может помочь?

Моя миссия - показать вам, что может qQuery делать эти задачи:
- легче выполнятся
- быстрее загружаться на странице
- более удобен для использования

Поэтому чего вы ждете? Переходите на учебник (http://15daysofjquery.com/examples/zebra/) и смотрите, как jQuery может легко раскрасить ваши таблички.

0

4

День 3й: рекламные ссылки

Сегодняшнее руководство будет коротким. Я хочу взяться за что-нибудь легкое, чтобы новичок в javascript мог посмотреть живой пример без шока.

Цель
Мы собираемся сделать быстрый и небольшой кусочек кода, используя jQuery, который будет конвертировать оформление всех наших рекламных ссылок на странице.

Зачем?
Некоторые вебмастера верят, что есть группа людей, которая обладает здравым смыслом, чтобы определить внешнюю ссылку и предпочтет напечатать её в строке браузера.

“Старый” путь
Есть много путей для вебмастеров, чтобы замаскировать их ссылки или сделать их очень сложными для избежания вызова другим путём. Некоторые из этих методов включают .htaccess и код на сервере.

Для достижения цели данного руководства я хочу показать некоторый код “старой школы”:

Код:
<a onmouseout="window.status=" onmouseover="window.status="></a>
return true;"&gt; href="http://www.affiliate-url-here.com"
target="_blank"&gt;Link Text Here

Этот код создан, чтобы показать общий адрес в статус баре браузера, когда посетитель наводит свой курсор на ссылку. Поэтому за место wwwwebsite.com/?aff=123 он увидит wwwwebsite.com.

Проблема
Если Вы большой любитель рекламных ссылок и с несколькими ссылками на нескольких страницах, и добавляете контент очень часто, то написание вышеприведённого кода становится утомительным. А помещение этого кода в каждую рекламную ссылку при модернизации вашего сайта станет кошмаром.

jQuery решение
Первый шаг

Мы хотим спрятать наши ссылки с помощью javascript как только возможно, поэтому мы начнем с этого:

Код:
<script src="http://yandex.st/jquery/1.4.4/jquery.min.js"></script>
<script type="text/javascript">            
  $(document).ready(function(){      
//code goes here      
});      
  </script>

Как только DOM будет готов запуститься, код внутри функции ready(function(){}) выполнится.

Дальше
Мы собираемся дать всем рекламным ссылкам имя класса и название. Имя класса поможет jQuery просканировать всю страницу и найти те ссылки, которые мы хотим изменить, не трогая обычные ссылки.

Имя служит двум целям: когда курсор находится над ссылкой, будет появляться подсказка с надписью wwwwebsite.com и такая же надпись будет отображаться снизу окна браузера (только в IE).

Код:
<a href="http://www.affsite.com/?id=123" title="http://www.affsite.com"></a>

 class="affLink"&gt;Super Duper Product

Говорим jQuery найти ссылки с классом = “affLink”

Код:
$('a.affLink')

Добавляем событие Mouseover

Код:
$('a.affLink').mouseover(function(){window.status=this.title;return true;})

Этот код говорит “Найди все ссылки с именем класса affLink и при наведении мышки (событие mouseover) поменяй статусную строку браузера на то, что ты нашла в title ссылки”.

Это не работает в FireFox, но работает в Internet Explorer (что на удивление использует большинство мира). В статус-баре FireFox просто отобразится ‘Done’ или не отобразится ничего. Я не тестировал это на других браузерах.

Расширяем - mouseout
jQuery позволяет нам связать несколько методов, например:

Код:
$('a.affLink').mouseover(function(){window.status=this.title;return true;})
.mouseout(function(){window.status='Done';return true;});

Этот кусочек говорит jQuery поменять обратно статусбар на Done, когда мышка больше не находится над ссылкой.

Если изменение mouseover и mouseout слишком сложно для Вас, то ничего не случится, если Вы напишите этот код:

Код:
$('a.affLink').mouseover(function(){window.status=this.title;return true;});
$('a.affLink').mouseout(function(){window.status='Done';return true;});

Собираем в кучку

Код:
<script src="http://flora.org.ru/wp-admin/jquery.js"></script>
<script type="text/javascript">            
$(document).ready(function(){      
$('a.affLink').mouseover(function(){window.status=this.title;return true;})      
.mouseout(function(){window.status='Done';return true;});      
});      
</script>

Последние мысли
Некоторые из Вас могут подумать, что этот день слишком простой. Другие могут с трудом понять суть занятия, потому что не используют рекламные ссылки.

В последующих занятиях Вы увидите, как я возьмусь за включение в сайт любого объекта, не зависимо от того, монетизируете траффик или нет.

0

5

День 4й: защищаем ссылки mailto

Правило номер один: не помещайте Ваш e-mail адрес в ссылку “mailto:”.

Чтобы сражаться с дьявольским легионом спамеров, веб-дизайнеры и программисты придумали множество хороших решений. Давайте быстро посмотрим на наиболее часто используемые обходные пути и их недостатки.

name [at-no-spam] website.com
Проблема: ссылка будет более удобной, чем вводить адрес вручную и иногда ошибаться.

Контактные формы
Проблема: есть риск, что спамеры воспользуются Вашим аккаунтом, чтобы массово разослать почту (пока вы не воспользуетесь безопасным скриптом).

Сокрытие с помощью javasrcipt
Проблема: Ваш e-mail остается открытым, даже если вы используете сложное шифрование, чтобы его замаскировать. И кто хочет воспользоваться посторонним сайтом для шифрования адреса один раз? Не я.

Прячемся за простой формой
(Например, смотрите на сайте Simon’а Willison’а (http://simon.incutio.com/contact/) на кнопочку ‘Reveal my Address’ около верха страницы).

Проблема: ни одной, которую могу представить себе.

Возможное решение: AJAX

Решение, которое я предлагаю, имеет несколько улучшений перед некоторыми обходными путями, которые используются вебмастерами:
Легко встраивать
Легко изменять
Нет суматохи в презентации
Нет надобности использовать сторонние утилиты, чтобы зашифровать адрес
Нет открытого адреса

По последнему пункту я подозреваю устройства шифрования e-mail и думаю, что спамеры не настолько умны, чтобы сделать реверс-инжениринг кода и собирать любые емейлы, которые зашифрованы этим же методом. На практике, я думаю, что шифрование e-mail в общем безопасно, но факт, что e-mail остаётся в html-коде.

Суть
jQuery берет данные с сервера
Файл, содержащий e-mail адрес (ссылка mailto:) преимущественно html с простым механизмом защиты

Демо
Я хочу начать с примеров, в которых показывается e-mail адрес, когда посетитель кликает по кнопке или ссылке, и вернусь назад, где e-mail адреса показаны открыто.

Пример с кнопкой. Без эффекта. http://15daysofjquery.com/examples/mailto/demo1.php
Пример с ссылкой. Эффект выпадания. http://15daysofjquery.com/examples/mailto/demo2.php
При загрузке страницы. Эффект выпадания. http://15daysofjquery.com/examples/mailto/demo3.php
При загрузке страницы. Без эффекта. http://15daysofjquery.com/examples/mailto/demo4.php
Код

Это сделано под некоммерческой лицензией creative commons license. Свяжитесь со мной, если Вы хотите использовать код в коммерческом продукте. Сейчас я буду использовать этот код в моей новой CMS для веб- дизайнеров, которую я скоро запущу.
Почему это безопаснее, чем обычная ссылка mailto?

Настоящая проблема ссылок mailto в том, что спамеры могут использовать автоматические программы для сканирования сети и получения адресов из html-кода. Они в основном находят вас так же, как это делает Гугл: следуют ссылкам.

Они ленивые, как большинство из нас. Следовательно, вряд ли они путешествовали по web, записывая адреса для спама.

Посмотрев исходный код любого из примеров, Вы можете увидеть, что адресов нет в html.

Это твердый путь к абсолютной гарантии, что Вы никогда не получите спам и получите только приятные письма от ваших посетителей?.. нет.

Но, убирая адреса из html, меняя секретную фразу в коде jQuery и изменяя имя файла с адресом, возможно даст вам компромисс между удобством для ваших посетителей и безопасностью адресов.

Одна последняя заметка
Посмотрите получше на код первых трех примеров и Вы увидите, что я использую функцию AJAX callback, чтобы включить эффекты slideDown() и show().

Другими словами, я не хочу, чтобы jQuery начала эффект slideDown(), пока информация (html) не будет получена из AJAX вызова. Отсылка секретной фразы на наш простой сервер и получение данных занимает некоторое время.

Правильно:

Код:
$(document).ready(function(){
$.post('mailtoInfo.php',{
  pass: "secret"
},function(txt){
  $('div.email').html(txt);
  $('div.email').slideDown("slow");
});
});

Неправильно:

Код:
$(document).ready(function(){
$.post('mailtoInfo.php',{
  pass: "secret"
},function(txt){
  $('div.email').html(txt);
});
 $('div.email').slideDown("slow");
});

0

6

День 5й: Создание теней - HTML-код для ленивых с использованием jQuery

Выходные в честь Дня Поминовения подходят к концу - я уже двое суток подряд не подходил к компьютеру (о ужас!), так что сейчас мне хочется быстренько дописать еще один урок по jQuery и выложить его в Интернете.

Я бы с огромным удовольствием занялся статьями «Как редактировать в Jquery» и «Секреты магической загрузки нескольких файлов», но они требуют особого внимания к деталям, поэтому я начну со статей попроще.

Итак, поехали!

С тех пор как я отказался от использования таблиц в качестве основы веб-сайтов и переключился на CSS (примерно два с половиной года тому назад, а может и больше), я постоянно ищу все, что только возможно найти по теме.

Еще в мае 2004 года на сайте «A List Apart» выложили прекрасный учебник по созданию падающих теней (он назывался «Onion Skinned Drop Shadows», «Очищенная луковица, отбрасывающая падающие тени») на любом изображении, вне зависимости от размера.

Комментарии к этой статье уже убрали, но надо сказать, некоторые из них подтверждали мысль, высказанную в предисловии редактора. Предисловие редактора:

Техника, предложенная в этой статье, подойдет не всем. Дизайнерский прием основывается на использовании тегов div, абсолютно бесполезных с точки зрения семантики и структуры. Если вам это не нравится (что вполне возможно), просто не пользуйтесь нашим методом.

(Подчеркнуто мной. – Джек)

Проблема

Некоторые приемы CSS предусматривают использование «посторонней» разметки, поскольку на сегодняшний день к каждому элементу можно привязать только одно фоновое изображение.

Например:

Вот код html, предложенный в статье с сайта «A List Apart»:

Код:
<div class="wrap1">
<div class="wrap2">
<div class="wrap3">
<img src="object.gif" alt="The object casting a shadow"/>
</div>
</div>
</div>

Все эти теги div служат своего рода якорями для фоновых изображений, которые образуют падающие тени.

Было бы куда удобнее сократить исходный код до вот такого:

Код:
<img src="object.gif" class="dropshadow" alt="The object casting a shadow" />

Отсюда следует…

Цель

Я расскажу вам о том, как убирать «постороннюю» разметку из исходного кода с помощью библиотеки jQuery. Этот метод позволит сделать код понятней и (что важнее) облегчит последующие изменения оформления.

Решение

Вот как jQuery решает проблему.

Код:
$(document).ready(function(){
$("img.dropshadow")
.wrap("<div class='wrap1'><div class='wrap2'>" +
"<div class='wrap3'></div></div></div>");
});

В итоге, изображения можно будет оформить вот так:

Код:
<img src="object.gif" class="dropshadow" alt="The object casting a shadow" />

Рассмотрим повнимательнее

$(document).ready()  - Это версия window.onload() в jQuery.
$(”img.dropshadow”) - говорит jQuery найти все картинки с именем класса “dropshadow”. Если бы Вы хотели использовать id, то взамен Вы могли бы сделать кое-что как $(”img#dropshadow”).
wrap()  - указывает на то, что библиотека jQuery должна использовать DOM (метод Document Object Model, объектная модель документов), чтобы заключить изображение, которое содержится в скобках, в оболочку class=”dropshadow”.

Конечный результат

Дурацкая картинка – но она использовалась в исходной статье:Образец падающих теней, созданных с помощью jQuery.

Сравните jQuery с другими библиотеками

На сайте jQuery есть ссылка на страницу Ajaxian, где рассказывается о том, как создать падающие тени с помощью другой библиотеки javascript. Мне кажется, длина и сложность кода говорят сами за себя. Лично я, как вы, наверное, уже догадались, предпочитаю jQuery.

Честно говоря, не существует библиотеки, которая подошла бы сразу всем создателям сайтов для выполнения любых задач. Я вовсе не утверждаю, что jQuery – единственная и самая лучшая библиотека javascript на все случаи жизни.

Попробуйте Prototype, Scriptaculous, YUI, Rico, Behaviour, Moo.fx или еще какую-нибудь из сотен подобных библиотек. Если она понравится вам больше – что ж, пользуйтесь.

jQuery - это утилита, которая мне помогает. Я надеюсь, что эта заметка покажет Вам еще одно полезное применение jQuery.

Полезные утилиты jQuery

jQuery позволяет невероятно легко манипулировать html в браузере клиента. Вы должны взглянуть на то,  что Вы можете сделать с jQuery, используя append(), prepend(), before(), after(), html(), и remove().

Более полные консультации

По уровню сложности я поставлю один или два. Но это нормально, потому что если идея простая, то применительна ко многим ситуациям, которые могут у вас возникнуть в вашей дизайнерской и программистской работе. И кроме того, независимо от того, когда Вы читаете эту заметку, помните, что я опубликовал после Memorial Day - полного солнца на пляжах Флориды. Я только что уложил семью в постель и на моих тапках до сих пор есть песок.

Отдых будет потом, но сначала мы дойдем до конца “15 дней с jQuery”, и Вы увидите немного больше полезных руководств, примеров и кода.

0

7

День 6й - Безопасные контактные формы без CAPTCHA

Сегодняшняя тема разговора очень близка мне: безопасные контактные формы.

Как я упоминал в предыдущем уроке, одно простое использование контактной формы помогает посетителям общаться с вами без раскрытия почтового адреса для программ спаммеров.

Но когда приходит спам, то нет ничего хуже небезопасной контактной формы. Представьте неприятный документ от Вашего хостера, что Ваш сайт используется для массовой рассылки почты и поэтому мы выключаем Ваш сайт, пока всё не исправите.

Поэтому сегодня я расскажу простой метод добавления дополнительной безопасности на ЛЮБУЮ контактную форму - даже если Вы не используете мою супер защищенную и гибкую [почтовую форму].

Ситуация
Помните, что спаммеры удаленно пробуют ваши формы на уязвимости… и вы хотите, чтобы они ушли.

Проблема
Вы не хотите использовать CAPTCHA, потому что вы знаете, что вынуждаете посетителей читать ужасные буквы и числа, только чтобы послать вам сообщение.

Итак, мы хотим сделать жизнь тяжелой для Плохих парней и суперпростой для Хороших.

Решение
Вы должны использовать jQuery и добавить некоторый скрытый тэг в форму при загрузке страницы. Когда форма отсылается на сервер, вы должны использовать некоторый PHP код, чтобы проверить следующее:
Скрытый тэг существует
Значние скрытого тэга совпадает с тем, что хранится в куки
Скрытый тэг не просрочен

Другими словами, Ваш посетитель имеет некоторое время (которое Вы задали), чтобы заполнить форму и отправить. И если спамер пытается послать сообщение через Вашу форму, он упрется в стену. Не пройдёт, не получит 200 баксов.

Что я собираюсь рассказать Вам, это измененная концепция умного парня Криса Снифлетта. Он эксперт по безопасности во всех видах проблем, которые возникают у PHP программистов, если они не беспокоятся о них.

Руководство
Я получил отличные ответы на День 2й: разлиновка таблиц делается легко, поэтому я решил сделать другое пошаговое руководство со снимками экрана. Это займет немного времени и будет полезным.

Руководство (на английском) http://15daysofjquery.com/examples/contact-forms/
Демонстрация http://15daysofjquery.com/examples/cont … e/demo.php
Скачать исходники http://15daysofjquery.com/examples/contact-forms/code/

Серебрянная пуля?
“Итак, мои формы защищены на 100%, и я могу использовать Generic Free Contact Form Processor With Sloppy Code и буду в безопасности?”.

Ну… Нет.

Эта концепция безопасности основана на ключевом предположении:
Cпамеры не будут весь день ломать контактную форму, будут брать то, что плохо лежит или само идет в руки.

А теперь слушай внимательно, мой дорогой друг:
Эта техника хоть и сильная, но не средство против слабого кода парсера формы.
Моё отношение к безопасности - это использовать несколько способов на сервере и на клиентской стороне, чтобы спаммер приложил огромные усилия, чтобы приблизиться к их дьявольской цели.
Я вижу защиту клиентской стороны аналогично помещению записки на окна дома, что дом защищен сигнализацией. Воры смотрят на записки, собаку во дворе, свет снаружи и другие сигналы хорошо защищенного дома. Они ищут большой заработок с минимальным риском и работой.

Другими словами, вы можете помешать 99% атак перед тем, как они начнутся, и вы можете делать это легко, так почему же не делаете? Это то, что дает технология.

Но это не лекарство для плохого парсера форм.

Оригинал тут http://15daysofjquery.com/safer-contact … ptchas/11/

0

8

День 7й - Переключатель стилей оформления

Впервые мне встретился style sheet switcher (переключатель таблицы стилей) то ли на сайте A List Apart (Уникальный список), то ли Simple Bits (Мелкие штучки). Это превосходные сайты, с которыми необходимо познакомиться, если хотите серьезно заниматься дизайном.

C тех пор я видел много разных способов, позволяющих активировать таблицу стилей одним щелчком мыши, а недавно наткнулся на небольшой пример того, как можно это делать с помощью jQuery.

Хочу показать этот пример и провести по нему читателя от начала до конца, поскольку он - не только очередной удачный пример краткой программы, которую можно написать с помощью jQuery. Он также иллюстрирует некоторые более продвинутые характеристики библиотеки jQuery javascript. Не буду сейчас останавливаться на некоторых функциях, связанных с созданием и чтением cookies - они встретятся позже.

Сначала код:

Код:
$(document).ready(function()
{
        $('.styleswitch').click(function()
        {
                switchStylestyle(this.getAttribute("rel"));
                return false;
        });
        var c = readCookie('style');
        if (c) switchStylestyle(c);
});

function switchStylestyle(styleName)
{
        $('link[@rel*=style]').each(function(i)
        {
                this.disabled = true;
                if (this.getAttribute('title') == styleName) 
                 this.disabled = false;
        });
        createCookie('style', styleName, 365);
}

Привычные основы

Код:
$(document).ready(function()
{
        $('.styleswitch').click(function()

Вначале программа дает задание jQuery: «Как можно скорее выделить все элементы с именем класса styleswitch (переключатель стилей) и мгновенно включить функцию, как только элемент вызван щелчком мыши».

Пока все идет хорошо.

При щелчке на элементе будет вызвана функция switchStylestyle. А теперь пойдем дальше.

Что происходит?
Я был поставлен в тупик тем, что увидел, когда обратил пристальное внимание на этот момент в первый раз.

Код:
$('link[@rel*=style]').each(function(i)
        {

Обшарив интернет и вернувшись с пустыми руками, я связался с John Resig (Джон Ресиг), создателем jQuery, и попросил его хоть как-то намекнуть мне на причину происходящего.

Он отправил меня к тем страничкам сайта jQuery, которые объясняют некоторые более продвинутые способы использования этой программы для поиска и умелого обращения с элементами на странице.

Если прочитать краткие объяснения и предложенные здесь примеры, то скоро станет очевидно, что эта загадочная строка программы велит jQuery: «Найди все ссылки с соответствующими атрибутами, содержащими строку ‘style’».

Классно?

Давайте посмотрим, как будет создаваться страничка с одной главной stylesheet (таблицей стилей) и двумя альтернативными:

Код:
<link rel="stylesheet" type="text/css" href="styles1.css" title="styles1" media="screen" />
<link rel="alternate stylesheet" type="text/css" href="styles2.css" title="styles2" media="screen" />
<link rel="alternate stylesheet" type="text/css" href="styles3.css" title="styles3" media="screen" />

Необходимо обратить внимание на то, что все ссылки на stylesheets имеют где-то на страничке соответствующие маркировки «style» в кавычках.

Т.е., короче говоря, эта программа велит jQuery выискать все ссылки на stylesheet на странице.

Что же дальше?

Функция «each()» проходит сквозь каждую ссылку на stylesheet и осуществляет операции, подробно описанные в следующих нескольких строках программы:

Код:
his.disabled = true;
if (this.getAttribute('title') == styleName) this.disabled = false;

«Отключите все ссылки на stylesheet, после чего отмените отключение всех тех ссылок, в которых атрибут «title» (название) совпадает с посланной switchStylestyle-функции задачей».

Звучит устрашающе, но все не так страшно.

По сути, мы подбираем пары соответствующих атрибутов ссылок (тех, на которые можно кликнуть, чтобы включить stylesheets) к доступным нам атрибутам, содержащимся в названиях stylesheets (и наоборот).

Если вызвать щелчком мыши одну из этих ссылок, то вызывается функция, которая обнаруживает все stylesheets, отключает их, после чего заново включает одну из них… - ту, название stylesheet-ссылки которой совпадает с соответствующим атрибутом вызванной ссылки.

Ну и дела!

Полная программа и демо-версии.

Поскольку Kelvin Luck (Келвин Лак) (http://www.kelvinluck.com/article/switc … ith-jquery) уже создал программу, то нет необходимости повторять ее здесь.

Демо

Программа - я не буду отсылать прямо к zip’у (заархивированной версии), это порой воспринимается как грубость. Если пойти на эту страницу (http://www.kelvinluck.com/article/switc … ith-jquery), то внизу ее будет видна ссылка на zip.

Сравнение с другим кодом. http://www.kelvinluck.com/assets/jquery/styleswitch/

Полагаю, что старик Kelvin был вдохновлен именно этим (http://www.ecst.csuchico.edu/~bertucci/ … itcher.htm) сайтом. Если познакомиться с ним, то станет очевидно, что делать это, не прибегая к jQuery, несколько более сложно. Не обращаясь jQuery, пользователь лишается тех преимуществ, которые дает программа Kelvin’а - т.е. долговременной памяти выбранного stylesheet.

0

9

День 8й - Скругленные углы с javascript (jQuery)

Вчера в 17:15 я наконец-то вернулся за компьютер, чтобы быстро проверить почту после 48-часового перерыва - итак, я запустил Thunderbird, и тотчас же выскочило несколько новостей RSS из моей подписки. (По выходным я занят реконструкцией дома, и все мое свободное время посвящено друзьям и семье…естественно, вдали от компьютера).

Мой новый приятель Дастин Диаз (включивший ссылку на меня и этот сайт в своем самом последнем аудиоблоге) добавил вызывающее сообщение под заголовком «Долой закругленные углы».

Я просмотрел этот новый источник информации о закругленных углах и увидел, что HTML отлично подойдет для создания экспромтного руководства по библиотеке jQuery – в сочетания функций wrap(), prepend(), and append().

Обратимся к HTML разметке, которая будет использована как отправной пункт:

Код:
<div class="dialog">
 <div class="hd">
  <div class="c"></div>
  </div>
 <div class="bd">
  <div class="c">
<div class="s">
  < -- main content goes here -->
</div>
  </div>
  </div>
 <div class="ft">
  <div class="c"></div>
  </div>
</div>

Итак, как мы обработаем данный HTML, используя jQuery, чтобы привести код в порядок?

В первую очередь нам нужна «зацепка» - уникальный элемент HTML, или идентификатор, или название класса объектов – для нацеливания на него jQuery.

Метод, который я предлагаю, удалит все тэги “div”, находящиеся выше. Поэтому я считаю, что в качестве хорошей «зацепки» может выступить простой тэг “div” с уникальным идентификатором или названием класса.

Давайте попробуем сделать следующее:

Код:
<div class="roundbox">
  < -- main content goes here -->
 </div>

Следующий шаг… мы используем jQuery чтобы добавить код в наш html:

Код:
$(document).ready(function(){ $("div.roundbox") .wrap('<div class="dialog">'+
        '<div class="bd">'+
        '<div class="c">'+
        '<div class="s">'+
        '</div>'+
        '</div>'+
        '</div>'+
        '</div>');
});

Где остальные тэги “div”?

Обратите внимание на код выше, и вы увидите, что все тэги “div” аккуратно расположились внутри других, а также обернулись вокруг контента, который будет включен в созданный нами закругленный блок в ближайшее время.

Вы также можете заметить, что я исключил значительное количество элементов разметки из оригинала. Это сделано потому, что функция wrap() в jQuery требует отлично вложенных тэгов “div” для своей работы.

В частности, я исключил эти две части:

Код:
<div class="hd"><div class="c"></div></div>
Код:
<div class="ft"><div class="c"></div></div>

Функции prepend() and append() одновременно

Если вы заметили, исключенные части как раз заходили внутрь, но в начале и конце тэга “div”, относящегося к классу «диалог». Это прекрасная возможность использовать функции append и prepend jQuery и связать их вместе.

Код:
$('div.dialog').prepend('<div class="hd">'+
        '<div class="c"></div>'+
        '</div>')
.append('<div class="ft">'+
        '<div class="c"></div>'+
        '</div>');
Код:
Пример и код

Я выложил на сайте (http://15daysofjquery.com/examples/rounded/demo.php) пример закругленных углов, полученных через jQuery, для обозрения. Обязательно обратите внимание на исходный код, потому что я хочу, чтобы вы увидели, насколько аккуратный вид приобретает HTML, когда все сценарии javascript и каскадные таблицы стилей распределяются по отдельным файлам.

Этот код был взят из статьи, размещенной на http://www.schillmania.com/ и по этой же ссылке я советую вам скачать zip-архив (http://www.schillmania.com/projects/dialog/), в котором находятся элементы изображений, помогающие добиться красивых закругленных углов.

Закругленные углы без изображений

Есть немало способов создания закругленных уголков и некоторые из них позволяют обойтись без каких-либо изображений
На веб-сайте jQuery находится дополнительный программный модуль, позволяющий получить закругленные углы без изображений. Он подойдет не каждому (или не для всякого приложения), но попробовать его стоит. Не просите меня усовершенствовать код, так как он достаточно серьёзен и изобилует тригонометрическими функциями, в которых я не силен.
Однако только взгляните на то, как стройно выглядит код (при использовании дополнительного программного модуля):

Код:
$(document).bind("load", function(){
$("#box1").corner();
	});

0

10

День 9й - Быстрый и грязный Ajax

Сегодня я попытаюсь рассказать о чем-то немного другом. Потребовалось время чтобы выяснить почему я не мог открыть свободный аккаунт на Ютюбе в течении 3х недель, но теперь всё нормализовалось и я закачал видео где я рассказываю некоторые простые пути как Вы можете используя jQuery добавить ajax функциональность Вашему сайту.

Видео короткое потому, что как я понял YouTube у меня есть ограничение в 10 минут. Не всё, что я говорю в упражнении 100% правильно. Есть небольшие ошибки, где я называю cgi “скрипт на стороне сервера” (server side script) когда более праильно назвать “язык на стороне сервера”.

Это AJAX, или AHAH, или AXAH?

Всё, что Вы сейчас увидите это больше AHAH чем AJAX.

В чем разница? X в слове AJAX - это XML. Нередко Вы моете брать кусочки текста или javascript из разных файлов не возясь с XML. Здесь лучше написано AJAX против AJAH. (http://microformats.org/?p=67)

Что касается AXAH… Я оставлю эту темя для объяснения Cody Lindley (http://codylindley.com/Javascript/237/a … e-you-ajax). Его статья очень хорошая и Вы должны уделить некоторое время если Вы хотите получить несколько больше знаний об AJAX.

Вот страничка (http://jquery.com/demo/ajax/) на сайте jQuery где я привожу несколько примеров.

0

11

День 10й - Редактирование на месте с AJAX, используя jQuery библиотеку

Впервые я увидел версию этого приложения на сайте wwwquirksmode.org, а позже нашел Web 2.0 версию на сайте www24ways.org.

Я хочу рассказать вам о двух способах использования библиотеки jQuery, с помощью которых можно достигнуть такого же, если не лучшего результата.

Цель

AJAX (или AHAH) - технология, позволяющая пользователям редактировать просматриваемую страницу HTML, не закрывая ее.

Концепция

Нажмите на текст, который собираетесь редактировать, и перед вами удивительным образом появится текстовая область с расположенными внизу кнопками «Сохранить» и «Отменить редактирование». Изменения с помощью AHAH преобразовываются в скрипты PHP, которые, как правило, используются для обновления баз данных (MySQL или неструктурированных файлов).

Демонстрация

«Edit In Place» - компонент административной панели приложения Ajax 1 http://15daysofjquery.com/examples/jque … ivEdit.php

В первой демонстрационной версии я использую элемент div с идентификатором ID «editInPlace». Когда курсор стоит на элементе div, задний фон меняет цвет на бледно-желтый. После того, как вы нажимаете на текст, открывается DOM (объектная модель документа), а элемент div удивительным образом превращается в текстовую область, внутри которой можно редактировать текст.

Нажимаем на кнопку «Сохранить», и новая страница HTML преобразуется в скрипты PHP, которые отображают полученные данные с помощью массива $_POST.

В реально существующем приложении вам еще придется настроить несколько дополнительных параметров безопасности, а затем обновить данные и отправить подтверждение успешного выполнения задачи в библиотеку jQuery.

Но в этом примере информация, отсылаемая в PHP скрипт, возвращается назад в jQuery и показывается в простом окне.

Объяснения

Способ, с помощью которого я все это выполняю, достаточно известен. Запомните, если вы не хотите использовать функцию jQuery document.ready, будьте готовы использовать метод init() function

Код:
<!--start_raw-->
$(document).ready(function(){
setClickable();
});
<!--end_raw-->

Первым делом сработает функция setClickable(). Данная функция предназначена для следующего:
Ищет элементы div с ID =”editInPlace” и сообщает jQuery необходимость начинать преобразования после того, как нажат div.

Код:
<!--start_raw-->
function setClickable() {
$('#editInPlace').click(function() {
<!--end_raw-->

Вставляет страницы html внутрь элементов div с использованием функции jQuery’s html(). Эта страница html размещается внутри других html, после чего отображается текстовая область и кнопки «Сохранить» и «Отмена».

Код:
var textarea = '<div><textarea rows="10" cols="60">'+$(this).html()+'</textarea>';
var button = '<div><input type="button" value="SAVE"
class="saveButton" /> OR <input type="button" value="CANCEL"
class="cancelButton" /></div></div>';
var revert = $(this).html();

Та же страница html размещается в элементе div с ID=”editInPlace” для того, чтобы можно было вернуться к первоначальному виду, в случае, если вы решите использовать кнопку «Отменить».

Код:
<!--start_raw-->var revert = $(this).html();<!--end_raw-->

DOM элемент “After” используется для вставки новой текстовой области html после ссылаемого узла div. Сразу же после этого, с целью сохранения места, я отправляю jQuery команду переместить элемент div.

Код:
<!--start_raw-->$(this).after(textarea+button).remove();<!--end_raw-->

Используя jQuery, я адаптирую кнопки «Сохранить» и «Отменить», используя их классовые имена. jQuery запускает последнюю функцию “Сохранить изменения” после того, как вы нажмете соответствующую кнопку. Я закрываю окно сообщения jQuery, показывающее необходимые действия, которые выполняются после нажатия элемента div. При этом не ставлю в конце апостроф, так как после этого элемента последует еще несколько действий.

Код:
<!--start_raw-->$('.saveButton').click(function(){saveChanges(this, false);});
$('.cancelButton').click(function(){saveChanges(this, revert);});
})<!--end_raw-->

Далее я вписываю в код «mouseover» или «mouseout». Эти команды передают jQuery необходимость добавить или удалить класс, когда курсор направляется на нужный элемент div (id=”editInPlace”).

Код:
<!--start_raw-->
.mouseover(function() {
$(this).addClass("editable");
})
.mouseout(function() {
$(this).removeClass("editable");
});
};//end of function setClickable
<!--end_raw-->

Функция “saveChanges” превращает объект кнопки в первую переменную, а отменённая переменная становится ложной или содержит страницу html, которую я сохранял в параметрах возвращения к исходным данным.

Код:
<!--start_raw-->
function saveChanges(obj, cancel) {
<!--end_raw-->

Если функция “cancel” является ложной, тогда я сохраняю изменения, преобразовывая html в php скрипты. Я забираю html из текстовой области, используя функции DOM, доступные благодаря библиотеке jQuery: parent() и siblings().

Код:
<!--start_raw-->
if(!cancel) {
var t = $(obj).parent().siblings(0).val();
<!--end_raw-->

Основные возможности DOM вне пределов этих функций. Как правило, я задаю команду jQuery “Объект (save button), который имеет родителя (div)… Искать. Этот объект имеет один или более объектов на том же уровне дерева DOM… Мне нужен первый объект. Найти величину объекта”.

(Если подумать… конечно, если вы не знакомы со способом кодировки DOM, пожалуй, мои объяснения не будут иметь для вас никакого смысла. Предлагаю вам найти “DOM javascript” в системе поиска Google, ну или “что-то в этом роде”).

Эта страница html имеет поле переменной “t” и сейчас пришло время передать ее через POST в файл test2.php.

Код:
<!--start_raw-->
$.post("test2.php",{
  content: t
},function(txt){
alert( txt);
});
}
<!--end_raw-->

Если отмененная переменная имеет величину, тогда страницу html следует изначально сохранить в переменной возвращения к исходным данным. Итак, в этом случае поле переменной “t” следует передать в первоначальную html.

Код:
<!--start_raw-->
else {
var t = cancel;
}
<!--end_raw-->

Следующий шаг - использование функций DOM в рамках библиотеки яваскриптов jQuery, для размещения новых div, с ID “editInPlace” после элемента, содержащего текстовую область… а затем убираем div, содержащий текстовую область.

Код:
<!--start_raw-->
$(obj).parent().parent().after('<div id="editInPlace">'+t+'</div>').remove() ;
<!--end_raw-->

Вкратце, это дает следующую команду библиотеке jQuery: “Сделайте два шага назад на ветвь DOM. Поместите HTML после объекта, найденного здесь, а затем переместите объект”.

В итоге, мы снова вызываем функцию «setClickable» и закрываем функцию «saveChanges()». Цель этого вызова - переустановка событий «onMouseover», «onMouseout» и «onClick».

Код:
<!--start_raw-->
setClickable();
}
<!--end_raw-->

Второй пример

Второй пример очень похож на первый, но немного сложнее.

«Edit In Place» -компонент административной панели приложения Ajax 2 http://15daysofjquery.com/examples/jque … e/demo.php

Вместо одного большого элемента div в этом примере каждый тег P управляет отдельной редактируемой областью.

Трудность возникает в случае, если вы захотите отправить данные на серверные скрипты, и при этом адаптируете верный Р-тег для обновления базы данных.

Я нашел этому решение: нужно пронумеровать каждый Р-тег и отправить коды PHP. В окошке предупреждения вы увидите, что коды PHP «распознали», какие именно P-теги были изменены.

Как узнать результат

Если вы использовали что-то похожее в своей работе, я думаю, вы захотели проверить, действительно ли произошли какие-то изменения перед тем, как сообщать jQuery команду обновить DOM новой страницей html.

Базой данных не предусмотрена подобная демонстрация, поэтому я этот шаг опустил.

0

12

День 11й - Волшебная загрузка нескольких файлов одновременно с помощью ненавязчивого javascript.

Предупреждаю: демонстрационные версии, предусмотренные для этого самоучителя, немного спятили после того, как на днях я надумал внести изменения в файл библиотеки jquery. Я еще поработаю над тем, чтобы вернуть демоверсии этого учебного пособия в сеть. Пока это не произошло, не просматривайте учебник, если пользуетесь браузером IE.

Много месяцев тому назад, пытаясь разобраться с шумихой, поднятой вокруг AJAX, я бродил по сайту FiftyFourEleven, разглядывая изумительные примеры новаторского подхода к программированию на javascript, когда совершенно случайно наткнулся на пример кода под названием «Загружайте Несколько Файлов с Помощью Одного Элемента Ввода».

Поэтому когда я решил начать выпуск библиотеки 15 Days of jQuery, он стал одним из первых скриптов, который я хотел переработать с помощью jQuery.

Для Фанатов Общедоступности

Несколько дней назад, просматривая свои файлы server.log с данными о работе сервера, я заметил, что получил trackback-уведомление с неизвестного мне сайта. Я посетил данный сайт и обнаружил, что два моих руководства на jQuery упоминаются в одной статье в качестве примера того, что автор на дух не переносит в языке javascript.

По утверждению этого болвана, любой инструмент или техника, который не ставит общедоступность и удобство на первое место – дефективен и неверен.

Несмотря на то, что я абсолютно не согласен с данным широко распространенным мнением, оно заставило меня призадуматься над этим конкретным учебником. Я вернулся к рабочему месту и изобрел способ создания подобного эффекта ненавязчивым образом… так что если какой-нибудь критик решит посетить страницу с выключенным javascript, он также сможет использовать форму.

Два Урока по Цене Одного

Задача №1: Осуществить загрузку нескольких файлов с использованием одного элемента ввода файла… и сделать весь процесс взаимодействия привлекательным.

Задача №2: Сделать загрузку нескольких файлов привлекательной… без ущерба удобства и простоты использования. Поставить в центр внимания ненавязчивый javascript для создания формы поля ввода нескольких файлов.

Примеры

Пример первый – всего один элемент для загрузки файла, но с добавлением библиотеки jQuery и некоего пользовательского кода, который вы скоро увидите, и у нас готов дружелюбный, удобный для пользователя скрипт загрузки нескольких файлов.

Загрузка нескольких файлов с помощью одного поля ввода.

Пример второй – код формы с несколькими полями ввода в файле .(x)html, но jQuery меняет отображение того, что пользователь видит на экране и дает результат, подобный представленному в первом примере. Преимущество этого метода состоит в его ненавязчивости… даже если javascript отключен в настройках браузера посетителя, это все равно не помешает ему загружать файлы.

Загрузка файлов с помощью нескольких полей ввода

Объяснение

Одно поле ввода –

Функция jQuery $(document).ready() делает две вещи:

Создает блочный элемент div, в котором отображается максимально доступное количество файлов для загрузки пользователем.
Находит поле ввода файла (исходя из того, что оно всего одно) и присоединяет к нему событие onChange.

Код:
$("input[@type=file]").change(function(){
doIt(this, fileMax);
});

Функция doIt() (ничего имя, да?) проверяет, достигнуто ли максимальное граничное значение файлов, и если нет, то прячет поле ввода файла, добавляет новое в элемент div, вставляет название выбранного файла в div с идентификатором id «files_list» и в конце добавляет кнопку Delete (удалить).

Для перемещения по дереву структуры DOM (объектная модель документов) я использую функцию parent() библиотеки jQuery, а затем удаляю элементы с помощью функции remove(). Я также применяю функции append() и prepend() для добавления названий файлов и новых полей ввода соответственно.

Два ключевых момента:

1- Вы устанавливаете максимально допустимое в этой строке количество файлов

Код:
var fileMax = 3;

2- Поля ввода файлов должны быть названы соответственно

Код:
<input type="file" class="upload" name="fileX[]"  />

Я делаю это так, что пользователь может добавлять или удалять поля, не беспокоясь о том, чтобы следить за id или названиями. Когда форма передается серверному скрипту, информация отсылается в массиве, по которому можно легко сделать обход.

Ввод нескольких файлов -

Справиться с этой задачей оказалось делом более хитрым.

Во-первых, количество допустимых к загрузке файлов определяется числом полей ввода в вашем документе .(x)html. Во-вторых, вам необходимо называть их так, чтобы информация о поле накапливалась в массиве.

Код:
<input type="file" class="upload" name="fileX[]"  />

Огромное отличие этой второй версии состоит в том, что я прохожу по каждому полю ввода файла и применяю функцию doIt(), когда меняется значение поля. Делая проход, я могу отсылать дополнительную, чрезвычайно важную для моего кода информацию: порядок полей в стеке.

Другими словами, во время исполнения кода он нацеливается на первое поле ввода, второе, либо же третье.

Вышеописанный код вы можете найти здесь:

Код:
$("input[@type=file]:nth-of-type("+n+")")

Гибкость библиотеки jQuery предоставляет мне возможность использовать таблицы стилей CSS и язык XPath для доступа и работы с отдельными элементами.

Вы заметите, что когда выбирается каждый последующий файл, поле ввода файла замещается названием файла. Щелчок по этому названию позволяет вам выбирать другой файл.

0

13

День 12й - jQuery Lightbox

Первое исполнение “Thickbox” от Cody Lindley (http://codylindley.com/Javascript/257/t … e-them-all), что привлекло меня в jQuery. С тех пор он сделал апдейт, чтобы исправить некоторые кросс-браузерные проблемы.

Несколько объявлений

$(document).ready выключает функцию TB_init(), которая включается во все события onClick для всех ссылок с именем класса “thickbox”.

Код:
function TB_init(){
       $("a.thickbox").click(function(){
	 var t = this.title || this.innerHTML || this.href;
	 TB_show(t,this.href);
	 this.blur();
	 return false;
});

Когда ссылка с “thickbox” нажата, начинает работать функция TB_show().

Код:
$("body")
 .append("<div id='TB_overlay'></div><div id='TB_window'></div>");
 $("#TB_overlay").click(TB_remove);
 $(window).resize(TB_position);
 $(window).scroll(TB_position);

 $("#TB_overlay").show();
 $("body").append("<div id='TB_load'><div id='TB_loadContent'><img
  src='images/circle_animation.gif' /></div></div>");

Как Вы можете увидеть ниже, два div добавляются к телу документа. Другими словами, два div’a добавляются в конец html перед тем, как закрывается тэг body.

Свойства оверлейного div’а заданы в CSS для добавления opaque appearance. Окно TB_window, куда скрипт поместит картинку или другую веб страницу, используя AHAH.

$(window).resize и $(window).scroll говорят jQuery выключить TB_position, если размер окна был изменен пользователем или если пользователь прокрутил страницу вниз. Это демонстрирует, как Thickbox может оставаться в середине страницы, когда вы скроллируете или изменяете размер страницы.

Далее Cody ищет url в коде Thickbox, чтобы найти суффикс.

Код:
var urlString = /.jpg|.jpeg|.png|.gif|.html|.htm|.php|.cfm|.asp|.aspx|.jsp|.jst|.rb|.txt/g;
var urlType = url.match(urlString);
if(urlType == '.jpg' || urlType == '.jpeg' || urlType == '.png' || urlType == '.gif'){//code to show images

Если это картинка, тогда jQuery добавляет функцию, которая используется для добавления html в заданное место.

Код:
$("#TB_window").append("<a href='' id='TB_ImageOff' title='Close'><img
id='TB_Image' src='"+url+"' width='"+imageWidth+"' height='"+imageHeight+"'
alt='"+caption+"'/></a>"
 + "<div id='TB_caption'>"+caption+"</div><div
  id='TB_closeWindow'><a href='#' id='TB_closeWindowButton'>close</a></div>"); 

 $("#TB_closeWindowButton").click(TB_remove);

Иначе файл закачивается с помощью функции jQuery load().

Код:
$("#TB_ajaxContent").load(url, function(){

0

14

День 13 - Табы jQuery

Клаус создал небольшой плагин (http://stilbuero.de/2006/05/13/accessib … th-jquery/), который создает доступные ненавязчивые javascript табы, используя jQuery.

С правильными (х)HTML и CSS вы можете создавать табы достаточно легко:

Код:
$.tabs("container"); // первый таб по умолчанию

Если вы хотите иметь второй таб по умолчанию, то сделайте так:

Код:
$.tabs("container", 2); // второй таб по умолчанию

У Клауса есть один пример (http://stilbuero.de/demo/jquery/tabs.html), на котором вы можете увидеть конечный результат.

Мой вклад

Я добавил кое-что ко вкладу Клауса, таким образом я придумал простую форму (http://15daysofjquery.com/examples/jqueryTabs/), которую вы можете использовать для создания разметки табов.

Инструкции:
Просто введите имя для каждого таба (до 5), и нажмите на кнопку внизу форму. На следующей странице создастся html, который вы можете скопировать и вставить в свой файл.

Вам также необходимо загрузить CSS (http://stilbuero.de/2006/05/13/accessib … th-jquery/) с сайта Клауса, изменить его, как вам подойдет, и, конечно, загрузить javascript библиотеки jQuery для вашего сервера.

Вот ссылка (http://15daysofjquery.com/examples/jqueryTabs/) на создание разметки таба.

Наслаждайтесь.

0

15

День 14: Javascript подсказки на стероидах

Примечание: Это обновление к моему первоначальному посту, который можно увидеть здесь: jQuery Подсказки (http://15daysofjquery.com/jquery-tooltips/20/)

Коди Линдли, автор «Thickbox», недавно выпустил «jTip – подсказка jQuery» (http://codylindley.com/Javascript/264/j … y-tool-tip)
Мне действительно нравятся некоторые дополнительные возможности (http://www.codylindley.com/blogstuff/js/jtip/), которые эти подсказки предусматривают. Уверен, что есть те из вас, которые думают, что не нуждаются в еще других подсказках, но я могу предоставить некоторые интересные заявления об идеи Коди в моей работе. Когда я посмотрел на источник html, у меня возникла одна проблема, которая имеет отношение к доступности - ссылки не работают, если javascript выключен. Я не склонен смотреть на весь javascript сквозь призму доступности, но это только казалось мне, что не может быть другой способ создать такой же эффект намного лучшим способом.

Определенно, мне не нравится идея жертвовать юзабилити (удобством) правильной ссылки на другую страницу в пользу всплывающей подсказки. Мне нравится подсказка, - и не неуважение к Коди, - но для заявления я учитываю необходимость в том, что ссылка работала несмотря ни на что.

Таким образом, вот что я получил сегодня - это незначительные изменения в скриптах Коди. Если вы не поклонник его подсказок, то мое изложение, вероятно не произведёт на вас впечатления. Но если вам нравится то, что он сделал, и недостатки ссылок, которые не будут работать с отключенным javascript, тогда это может быть вам подойтёт.

Мои Изменения
Ссылка, которая действительно заставила меня задуматься о возне с кодом – один кусочек для yahoo. Она ведет к внешнему сайту (Yahoo), имеет отличные небольшие подсказки при событии mouseover, но мне не нравится этот код тем, что он использовал для создания это:

Код:
<a href="yahoo.htm?width=175&amp;link=http://www.yahoo.com" 

name="Before You Click..."
id="yahooCopy"
class="jTip">
Go To Yahoo</a>

Поэтому я переделал немного его скрипт, и теперь тот же эффект может быть достигнут таким образом:

Код:
<a href="http://www.yahoo.com"
rel="yahoo.htm?width=175&link=yahoo&name=Before%20
%20You%20Click..."
id="yahooCopy"
class="jTip">
Go To Yahoo</a>

Улучшение: валидный HTML.
Мой новый код действует согласно w3.org

Улучшение: наименования
Пока я рассматривал код, делая неболшие изменения, я заметил, что Коди использует переменную названную ‘title’ которая была связана со значением найденным в имени ссылки. Это может сбивать с толку.

Улучшение: Юзабилити
С моим кодом у вас будет подсказка к подлинной ссылке к другому документу, внутреннему или внешнему. Или, если вы хотите только подсказку и не позаботитесь о юзабилити, вы можете убрать ссылку из кода.
Выбор за вами.

Подсказка
Коди пришел с большой концепцией и сохранил мне массу времени, проделав тяжелую работу.
Мои изменения ни в коем случае не являются критикой – это просто незначительные “щипки”, которые, я думаю, мои читатели могут оценить.

Наслаждайтесь.

0

16

День 15: Перетаскиваемые Бросаемые Выделяемые… о Боже!

Когда я только начал 15DaysOfjQuery.com, я сделал этот комментарий на одной из страниц «О сайте»:

Если вам нужны супер фантастические эффекты для анимации, перетащить и бросить, и супер гладкая анимация, то вы, вероятно, захотите использовать Прототип, и одну из многих великих библиотек, созданных для улучшения эффектов

Я оставил мое ошибочное замечание, чтобы показать вам, как быстро jQuery был принят талантливыми кодировщиками javascript, готовыми и способными создавать плагины, которые дают «старым» библиотекам AJAX выставлять свою кандидатуру за их деньги.

Вы видите, что через несколько дней после публикации «ограничений» jQuery мое внимание привлекло то, что очень талантливый кодировщик был занят опубликованием некоторых интересных плагинов анимации для jQuery, что может быть очень полезно для веб-приложений.

Например, я играл со списком сортировки для панели управления администратора в моей новой системе управления контентом. Я был недоволен версией кода PHP из “списка сортировки”, найденного на Scriptaculous. Код не был в состоянии справиться с самой последней версией Прототипа… но выглядел таким многообещающим.

Примечание: PHP версия на gregphoto.net сейчас, похоже, обновлена, но я не проверял сам. Так что, если вас нравится Прототип больше, чем jQuery, я бы проверить свой код. Кроме того, я считаю интересным, что демо-версия списка сортировки на Scriptaculous не работает вообще в FireFox, - и не сейчас. Я не знаю, что это - ошибка кодирования на их сайте, или ошибка в самом коде.

Когда я нашел плагин jQuery для списков сортировки (http://interface.eyecon.ro/demos/sort.html), я не мог поверить, как очень простой код просто сортировал несколько списков, перемешивал и выстраивал списки и передавал информацию в базу данных.
Я был в раю!

С тех пор число плагинов для интерфейса неуклонно росло. Я думаю, вам действительно придется очень трудно создать эффектный интерфейс, который не может быть выполнен с помощью jQuery и этих прекрасных плагинов - http://interface.eyecon.ro/

“Библиотека Аякса XYZ лучше”
Если у вас есть библиотека AJAX, которая вам нравится больше, то, пожалуйста, продолжайте использовать ее. Не то чтобы я не хочу услышать хорошо продуманный комментарий о различиях между разными библиотеками - их сильные и слабые стороны, - но суть этого поста в том, чтобы показать, что jQuery – это больше, чем просто легкая javascript библиотека для DOM (объектной модели документов) с небольшим добавлением AJAX…

Наоборот… Вы можете использовать jQuery для достижения некоторых очень сложных эффектов - http://interface.eyecon.ro/demos/sort.html

Я знаю, есть некоторые очень умные кодировщики, которые предпочитают YUI, или Прототип, Dojo, или fill-in-the-blank. Я также знаю, что некоторые весьма влиятельные и умные кодировщики придают jQuery другой вид - http://simon.incutio.com/archive/2006/06/26/libraries

jQuery достигает зрелости быстро. Талантливые кодировщики сотрудничают в библиотеке и активно обсуждают способы, как сделать библиотеку еще лучше.

0

Похожие темы


Вы здесь » Форум поддержки «ЖивыеФорумы.ру» » Новые возможности форумов » Перевод руководства Джека Борна "15 Days Of jQuery"