Логотип Валидатор Валидатор Качество создания сайта

ВЫБОРКА в jQuery


Перед началом отбора

Для выборки используется универсальная функция, появившаяся после подключения библиотеки jQuery.

Вспомнить! Вспомнить: УНИВЕРСАЛЬНАЯ функция jquery('   ');

Краткое написание: $('   ');   =   jquery('   ');

Кавычки внутри ОДИНАРНЫЕ!

ВСЁ писать внутри главной КОНСТРУКЦИИ ОЖИДАНИЯ ПОСТРОЕНИЯ DOM-дерева.

$(document).ready(function() { Здесь ВСЁ-ВСЁ-ВСЁ, все скрипты });


Есть сокращённая запись.

$(function() { Здесь ВСЁ-ВСЁ-ВСЁ, все скрипты });


Пример записи с отбором всех абзацев (тэгов <p></p>) на странице.

$(function() {$('p');});

**P.S. Лучше не забывать в конце конструкции ставить комментарий   //конец ready На странице (в файле скриптов) может быть НЕ ОДИН модуль с такой конструкцией.

КОММЕНТАРИИ:   /* ... ... ... */ - многострочные     // ... ... - однострочные.


Основы выборки элементов в jQuery

Буду использовать краткое написание функции выбора: $('   ');

ПРИНЦИП отбора в jQuery
(по тэгам, идентификаторам, классам)

$('p'); - отберёт ВСЕ тэги p (абзацы) на странице

$('#main'); - отберёт ВСЕ элементы с идентификатором id="main"

$('.class'); - отберёт ВСЕ элементы с классом class="class"


Вложенные и дочерние селекторы, следующий тэг

$('#main p'); - отберёт ВСЕ тэги p, вложенные в элемент с идентификатором id="main"

$('#main + p'); - отберёт только 1 тэг p, следующий ЗА элементом с id="main"

$('#for_img > img'); - отберёт ВСЕ "дочерние" (т.е., которые принадлежат САМОМУ элементу, а НЕ его "детям") тэги img, содержащиеся в элементе с id="for_img"


Выборка по наличию и значению атрибутов

[ ]-символ атрибута     ^-начало строки     $-конец строки     *-в любом месте атрибута

Внутри [ ] символа атрибута БЕЗ кавычек!

$('img[width=200]'); - отберёт ВСЕ картинки (тэги img), у которых атрибут width=200

$('a[href^=http]'); - отберёт ВСЕ ссылки (тэги a), у которых атрибут href начинается ИМЕННО с http

$('img[src$=.jpg]'); - отберёт ВСЕ картинки (тэги img), у которых расширение .jpg

$('img[src*=moto]'); - отберёт ВСЕ картинки (тэги img), в атрибуте src которых есть значение, слово moto

P.S.**   У меня символы ^ и $ работали ПЛОХО(!), а символ * чаще всего вообще был НЕ нужен!
Лучше использовать другие способы выборки. Их в jQuery полно!


Фильтрация выборок

Фильтры нужны для ОСОБЫХ условий выборки.    : -символ фильтра

Чётные/нечётные

Задание: выбрать только чётные строки таблицы.

$('#moto_table tr:even'); - выберет чётные строки таблицы с id="moto_table"

$('#moto_table tr:odd'); - выберет нечётные строки таблицы с id="moto_table"

*Учесть! Чётные/нечётные - с точки зрения скрипта, а для него первый элемент массива 0 - чётный!


Отрицание

not() - КРОМЕ того, что в скобках

Задание: выбрать ВСЕ РИСУНКИ, кроме тех, что внутри элемента с id="navig"

$('img:not(#navig)'); - выберет, как указано в задании.


"Содержащие"

has() - которые СОДЕРЖАТ то,что в скобках

Задание: выбрать ВСЕ блоки div, которые СОДЕРЖАТ внутри себя тэги fieldset

$('div:has(fieldset)'); - выберет, как указано в задании.


Отбор по слову (контенту)

contains() - содержащие текст, слово, что указано в скобках.

Задание: выбрать ВСЕ абзацы p, в которых есть слово мотоцикл

$('p:contains(мотоцикл)'); - выберет, как указано в задании.


Фильтр первого/последнего элемента

first - первого     last - последнего

Задание: в элементе с id="main" отобрать последний, входящий в него рисунок (img).

$('#main img:last'); - выберет, как указано в задании.


Спрятанный/видимый элемент

hidden - спрятанный     visibility - видимый

Задание: отобрать ВСЕ спрятанные блоки div.

$('div:hidden'); - выберет, как указано в задании. (*P.S. Это часто применяют на сайтах: сначала прячут, а потом выводят что-либо.)


Список фильтров и их состояний для форм

(Взято из уроков 93 и 94)

Список фильтров

:input - для всех элементов типа input (их много)

:checkbox - для чекбоксов

:radio - для радиокнопок

:text - текстовые поля форм

:password - для ввода паролей

:file - поля поиска файлов (не забыть! в коде формы - enctype="multipart/form-data")

:reset - СБРОС введённого в поля

:submit - фильтр для кнопки СОЕДИНИТЬ

:image - для кнопки-рисунка СОЕДИНИТЬ

:button - просто КНОПКА

:hidden - спрятанные, невидимые поля

Список состояний фильтров элементов форм

:checked - "отмечено" - может использоваться для чекбоксов и радиокнопок

:selected - "выбрано" - для полей, создаваемых тэгами <select>


Формы - это "особое сословие". Вот им и уделяется столько внимания. И фильтры у них есть, и состояния у некоторых фильтров есть ... ... .

Примеры написания

Приведу несколько примеров написания для использования в jQuery.

$(':checkbox').fadeOut(5000); - За 5 секунд растают ВСЕ чекбоксы.

$('#my_form :submit').fadeOut(); - СРАЗУ скроет кнопку отправки (она такая всего одна в отобранном блоке формы).
Пробел именно так, т.к. : (двоеточие) принадлежит фильтру!

$('#my_form :checkbox:checked').fadeOut(); - Скроет лишь ТОЛЬКО ОТМЕЧЕННЫЕ чекбоксы.
Причём, важно! Фильтр и его состояние - БЕЗ пробела!

Внимание! Важно! Прямой выбор с фильтром НЕ РАБОТАЕТ!
К примеру: $('#my_button :submit').fadeOut(); - НИЧЕГО(!) не скроет.
Фильтру здесь нечего фильтровать. Уже всё без него выбрано, и он только мешает!

БЕЗ него же - вот так: $('#my_button').fadeOut(); - всё пройдёт "на ура"!



Полезная информация

Отбор разнотипных элементов

Чтобы собрать в один jQuery-набор элементы разных типов, нужно это делать через запятую  , 

Задание: нужно отобрать ВСЕ КАРТИНКИ шириной 200px, и ВСЕ ССЫЛКИ, содержащие в любом месте атрибута href слово documents

$('img[width=200], a[href*=documents]'); - отберёт, как указано в задании.


ГЛОБАЛЬНАЯ переменная

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

Такая переменная называется "глобальной".

var global = $('#myForm input'); - отберёт ВСЕ элементы формы с тэгом input, которые сохранятся в переменной (станут её значением). Имя переменной любое!

Теперь эту переменную можно использовать уже БЕЗ кода отбора!

global.filter(':checkbox'); - найдёт все "флажки" (чекбоксы) формы.

global.filter(':text'); - найдёт все текстовые поля.

global.filter(':text[value != ""]'); - найдёт все НЕпустые текстовые поля.

Последняя запись кода интересна тем, что используется очень(!) часто.

Смысл написания символов  != "" - означает: НЕ равно ПУСТОТЕ!
Причём, Очень важно! очень важно(!), чтобы между кавычками  ""  НИЧЕГО НЕ БЫЛО! Иначе, смысл выражения сменится ровно на противоположное. *Пробел - тоже символ!


В последних примерах написания кода уже присутствует информация из раздела "Методы". Пора переходить к ним.

* * *

Тема ВЫБОРКИ объектов закончена, перехожу к МЕТОДАМ: к МЕТОДАМ

Нижняя стрелка вернёт на 1-ую страницу справки "Основы jQuery" (подключение).

в ОСНОВЫ jQuery

ВВЕРХ

Все права защищены. Copyright © 2009 - Коротеев Владимир.

Яндекс.Метрика