03.04.2014 Views

Май - Xakep Online

Май - Xakep Online

Май - Xakep Online

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

coding<br />

Раскрывающиеся новости<br />

Многоуровневое меню<br />

элементов. Приведу описание нашей формы<br />

без таблиц разметки:<br />

Элементы формы без разметки<br />

HTML<br />

HTML для очистки<br />

<br />

<br />

Теги<br />

<br />

<br />

Атрибуты<br />

<br />

<br />

Зачищенный HTML<br />

<br />

<br />

Очистить<br />

Как видишь, функциональность небольшая, но<br />

нам достаточная. Мы будем удалять ненужные<br />

атрибуты и очищать бесполезные пустые тэги.<br />

Первое действие я подробно распишу, так как<br />

на его примере можно посмотреть, как парсить<br />

HTML с помощью jQuery.<br />

Прежде всего надо получить текст из поля<br />

ввода с идентификатором source. Затем нужно<br />

получить на его основе объект jQuery. Я сделал<br />

это с помощью невидимого контейнера resdiv.<br />

Оформить это лучше в виде отдельной функции<br />

getUserHtml():<br />

Тело функции getUserHtml()<br />

JavaScript<br />

$(document.body).append("");<br />

var htmlToClean =<br />

$("#source").val();<br />

$("#resdiv").html(htmlToClean);<br />

Для парсинга HTML мы, разумеется, воспользуемся<br />

функцией $(…), но искать объекты нам надо<br />

не по всему документу, а только в контейнере<br />

resdiv, поэтому обязательно придется указать<br />

второй параметр у функции $(…) в качестве контекста<br />

поиска. Осталось уточнить, что работать<br />

со значением элементов форм нужно методом<br />

val(), а весь код необходимо поместить в конструкцию<br />

$(document).ready:<br />

Тело функции getUserHtml()<br />

JavaScript<br />

$("#clean").click(function() {<br />

getUserHtml();<br />

$("*", $("#resdiv")).<br />

each(function() {<br />

attrsToClean = ("#attrsToClean").<br />

val().split(" ")<br />

for (attr in attrsToClean)<br />

{<br />

$(this).removeAttr(<br />

attrsToClean[attr]);<br />

}<br />

});<br />

$("#result").val($("#resdiv").<br />

html());<br />

return false;<br />

});<br />

Итак, что же мы натворили нашими программистскими<br />

руками? Сперва мы повесили<br />

обработчик клика на кнопку «Очистить».<br />

В нем мы вызываем функцию<br />

getUserHtml, которую описали выше.<br />

Далее мы находим все HTML-элементы в<br />

контейнере resdiv. Для извлечения строки<br />

атрибутов из поля ввода attrsToClean используем<br />

метод val() и разбиваем атрибуты<br />

пробелами. Пробегаясь по всем атрибутам<br />

из списка, удаляем их. Результат помещаем<br />

в поле ввода result. И все! Удалять<br />

стоит атрибуты lang, style и class. Также<br />

можно посмотреть, какие атрибуты любит<br />

добавлять твой визуальный редактор. Что<br />

касается ненужных тэгов, например span<br />

после Word’а, то их проще всего удалять<br />

регулярными выражениями. Это и останется<br />

тебе на самостоятельную работу, потому что<br />

к jQuery имеет мало отношения ;).<br />

Заканчиваем<br />

Ух, много дел свершено, мало кода написано,<br />

лепота! Надеюсь, мне удалось не только объяснить<br />

основные принципы работы фреймворка<br />

jQuery, но и показать на конкретных примерах,<br />

как написать приложения. Вторая моя<br />

надежда связана с тобой: попробуй написать<br />

код из статей (или, в крайнем случае, возьми<br />

его с диска) и задействуй его у себя на сайте<br />

или блоге. z<br />

Философское отступление, или мысли программиста вслух<br />

Последствия применения jQuery в качестве фреймворка при разработке веб-приложений на стороне клиента сразу бросаются в глаза. HTMLкод<br />

становится чистым, кристально чистым, как в рекламе стирального порошка :). Это происходит, из-за отсутствия, во-первых необходимости<br />

прописывать события внутри HTML-кода, а во-вторых «лишних» классов, которые могут быть добавлены динамически. Тем не менее, всегда могут<br />

пострадать пользователи с отключенным JavaScript. И последнее, что стоит отметить, — это отсутствие HTML для декорирования. Ярким примером<br />

может быть создание скругленных уголков у элементов, когда при обычном подходе используются вложенные контейнеры.<br />

Следующее, что бросается в глаза, — это уменьшение количества кода. Тут, в первую очередь, играет роль мощный механизм поиска нужных элементов.<br />

И конечно же нельзя забыть об автоматизации множества рутинных действий с помощью фреймворка jQuery.<br />

xàêåð 05 /101/ 07<br />

/<br />

131

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!