Ãœðù - Xakep Online
Ãœðù - Xakep Online
Ãœðù - Xakep Online
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