15 дней с jQuery

Фото автора =) 25.02.2008 от ROM Комментарии (4) »

Это руководство было взято и переведено с сайта Джека Борна “15 Days Of jQuery”.
Часть постов была переведена своими силами, часть с помощью Perevodby.ru.

День 1й: Быстрее чем window.onload
День 2й: разлиновка таблиц делается легко
День 3й: рекламные ссылки
День 4й: защищаем ссылки mailto
День 5й: Создание теней - HTML-код для ленивых с использованием jQuery
День 6й - Безопасные контактные формы без CAPTCHA
День 7й - Переключатель стилей оформления
День 8й - Скругленные углы с javascript (jQuery)
День 9й - Быстрый и грязный Ajax
День 10й - Редактирование на месте с AJAX, используя jQuery библиотеку
День 11й - Волшебная загрузка нескольких файлов одновременно с помощью ненавязчивого javascript.
День 12й - jQuery Lightbox
День 13 - Табы jQuery
День 14: Javascript подсказки на стероидах
День 15: Перетаскиваемые Бросаемые Выделяемые… о Боже!


Популярность: 100%

Подпишитесь: rss icon RSS Записей rss iconRSS комментариев.
Понравился пост? Поддержи сайт!

Рубрики: 15 дней с JQuery |

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

Фото автора =) 25.02.2008 от ROM Комментарии (2) »

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

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

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

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

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

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

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

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

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

Наоборот… Вы можете использовать jQuery для достижения некоторых очень сложных эффектов.

Я знаю, есть некоторые очень умные кодировщики, которые предпочитают YUI, или Прототип, Dojo, или fill-in-the-blank. Я также знаю, что некоторые весьма влиятельные и умные кодировщики придают jQuery другой вид.

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


Популярность: 85%

Похожие посты:
  • None Found
Подпишитесь: rss icon RSS Записей rss iconRSS комментариев.
Понравился пост? Поддержи сайт!

Рубрики: 15 дней с JQuery, Переводы |

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

Фото автора =) 22.02.2008 от ROM Комментариев нет »

Оригинал

Примечание: Это обновление к моему первоначальному посту, который можно увидеть здесь: jQuery Подсказки.

Коди Линдли, автор «Thickbox», недавно выпустил «jTip – подсказка jQuery».
Мне действительно нравятся некоторые дополнительные возможности, которые эти подсказки предусматривают. Уверен, что есть те из вас, которые думают, что не нуждаются в еще других подсказках, но я могу предоставить некоторые интересные заявления об идеи Коди в моей работе. Когда я посмотрел на источник 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’ которая была связана со значением найденным в имени ссылки. Это может сбивать с толку.

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

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

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


Популярность: 84%

Подпишитесь: rss icon RSS Записей rss iconRSS комментариев.
Понравился пост? Поддержи сайт!

Рубрики: 15 дней с JQuery, Переводы |

День 13 - Табы jQuery

Фото автора =) 11.02.2008 от ROM 1 Комментарий »

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

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

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

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

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

У Клауса есть один пример, на котором вы можете увидеть конечный результат.

Мой вклад

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

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

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

Вот ссылка на создание разметки таба.

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


Популярность: 78%

Подпишитесь: rss icon RSS Записей rss iconRSS комментариев.
Понравился пост? Поддержи сайт!

Рубрики: 15 дней с JQuery, Переводы |

День 12й - jQuery Lightbox

Фото автора =) 06.02.2008 от ROM 1 Комментарий »

Первое исполнение “Thickbox” от Cody Lindley, что привлекло меня в 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(){

Популярность: 85%

Подпишитесь: rss icon RSS Записей rss iconRSS комментариев.
Понравился пост? Поддержи сайт!

Рубрики: 15 дней с JQuery, Переводы |

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

Фото автора =) 28.01.2008 от ROM Комментарии (2) »

Предупреждаю: демонстрационные версии, предусмотренные для этого самоучителя, немного спятили после того, как на днях я надумал внести изменения в файл библиотеки 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 для доступа и работы с отдельными элементами.

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


Популярность: 90%

Подпишитесь: rss icon RSS Записей rss iconRSS комментариев.
Понравился пост? Поддержи сайт!

Рубрики: 15 дней с JQuery, Переводы |

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

Фото автора =) 21.01.2008 от ROM Комментарии (2) »

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

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

Цель

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

Концепция

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

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

«Edit In Place» - компонент административной панели приложения Ajax 1

В первой демонстрационной версии я использую элемент 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

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

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

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

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

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

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


Популярность: 86%

Подпишитесь: rss icon RSS Записей rss iconRSS комментариев.
Понравился пост? Поддержи сайт!

Рубрики: 15 дней с JQuery, Переводы |

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

Фото автора =) 14.01.2008 от ROM Комментарии (2) »

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

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

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

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

В чем разница? X в слове AJAX - это XML. Нередко Вы моете брать кусочки текста или javascript из разных файлов не возясь с XML. Здесь лучше написано AJAX против AJAH.

Что касается AXAH… Я оставлю эту темя для объяснения Cody Lindley . Его статья очень хорошая и Вы должны уделить некоторое время если Вы хотите получить несколько больше знаний об AJAX.

Вот страничка на сайте jQuery где я привожу несколько примеров. Ссылка откроется в новом окне.


Популярность: 69%

Подпишитесь: rss icon RSS Записей rss iconRSS комментариев.
Понравился пост? Поддержи сайт!

Рубрики: 15 дней с JQuery, Переводы |

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

Фото автора =) 09.01.2008 от ROM Комментарии (3) »

Вчера в 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>');

Пример и код

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

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

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

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

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

Популярность: 67%

Подпишитесь: rss icon RSS Записей rss iconRSS комментариев.
Понравился пост? Поддержи сайт!

Рубрики: 15 дней с JQuery, Переводы |

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

Фото автора =) 24.12.2007 от ROM Комментариев нет »

Впервые мне встретился 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 и осуществляет операции, подробно описанные в следующих нескольких строках программы:

this.disabled = true;
if (this.getAttribute('title') == styleName) this.disabled = false;

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

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

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

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

Ну и дела!

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

Поскольку Kelvin Luck (Келвин Лак) уже создал программу, то нет необходимости повторять ее здесь.

Демо

Программа - я не буду отсылать прямо к zip’у (заархивированной версии), это порой воспринимается как грубость. Если пойти на эту страницу, то внизу ее будет видна ссылка на zip.

Сравнение с другим кодом.

Полагаю, что старик Kelvin был вдохновлен именно этим сайтом. Если познакомиться с ним, то станет очевидно, что делать это, не прибегая к jQuery, несколько более сложно. Не обращаясь jQuery, пользователь лишается тех преимуществ, которые дает программа Kelvin’а - т.е. долговременной памяти выбранного stylesheet.

Спонсор поста: stepmania


Популярность: 59%

Подпишитесь: rss icon RSS Записей rss iconRSS комментариев.
Понравился пост? Поддержи сайт!

Рубрики: 15 дней с JQuery, Переводы |

« Раньше


Рубрики:

Управление:

Счетчики:




Рейтинг блогов
Рейтинг блогов
Рейтинг блогов
Яндекс цитирования
Каталог блогов Blogdir.ru
количество читателей онлайн и всего
Каждому своё…
Блог о jQuery, Linux и немного программировании

Узнайте о размещении рекламы в этом блоге. >>>

Узнайте о размещении рекламы в этом блоге. >>>