Archive for January 12th, 2007:
jQuery урок 10
Не уверен, что это совсем урок. Точнее это урок-вопрос.
Я уже говорил, что jQuery мне нравится и она понятно, но JavaScript - по прежнему в зачаточной стадии изучения. Увы и увы.
Поэтому урок-вопрос.
Задача: предположим, у нас есть n-ое количество областей, которые изначально спрятаны, но показываются по первому требованию. Например некий FAQ с длинным списком вопросов и спрятанными ответами. Разумеется, только мы “кликаем” на вопросе - ответ отображается. Повторный клик - ответ прячется. Логично-разумно.
Решение я вижу таким образом:
Код html:
<dl id="menu">
<dd>Это первый пункт</dd>
<dt>Это то, что внутри</dt>
<dd>Это Второй пункт</dd>
<dt>Это то, что внутри 2</dt>
<dd>Это третий пункт</dd>
<dt>Это то, что внутри 3</dt>
</dl>
Ну пусть будет через dl сделано. Это не принципиально.
Теперь код jQuery:
$("#menu/dt").hide();
Т.е. после загрузки - прячем (костыль для тех, у кого неразрешён JS).
А дальше то, над чем я бился:
$("#menu/dd").toggle( function()
{$(this).find("+dt").slideDown("fast"); },
function ()
{$(this).find("+dt").slideUp("fast");}
)
Т.е. #menu/dd - функция срабатывает для всех dd, которые “ходят под id=menu”. Она переключает первый найденный dt (после this-dd). Определяем - что это за dd, ищем ближайший dt - и переключаем его видимость.
Вот standalone пример.
Но, есть но. Мне кажется что find будет немного тормозить. Всё-таки поиск - нешуточки… А как “засунуть” this в понятие “this:+dt” я что-то никак немогу понять. Или непроснулся ещё, или это невозможно, или надо как-то ещё по-другому.
Какие идеи, друзья?
UPDATE: ларчик открывается немного проще. Функцию toggle можно преобразовать к виду:
$("#menu/dd").toggle( function()
{$("+dt",this).slideDown("fast"); },
function ()
{$("+dt",this).slideUp("fast");}
)
Засунув this после запятой, так мы избавляемся от find. Однако FireBug показывает warning-и. Как от них избавиться? Или не переживать?
Пятничное
Открылся сервис социальных закладок BobrDobr. Описано неплохо в Интернетных штучках. Кстати, если у Яндекса спросить “Интернетные штучки”, то можно удивиться, что выдаётся по результату запроса…
Я лично, пока не вижу причин - зачем пользоваться БобромДобром, если есть более лёгкий по коду и дизайну - del.icio.us?
Cooler обновился. Последнее время журнал опять стал обновляться регулярно. В отличие от WebSound.
Google пробует брать плату за API. Интересно. Вот и первая ласточка. Большой Брат не следит за тобой, Большой Брат тупо хочет твоих денег
Subscribe to the comments for this post