Эта функция разбирает строку в формате JSON и возвращает результат. Она возбуждает исключение, если в исходной строке будет обнаружена ошибка. Библиотека jQuery использует стандартную версию функции
JSON.parse,
если она определена в броузере. Обратите внимание, что в библиотеке jQuery имеется только функция разбора строк в формате JSON, но в ней отсутствует функция сериализации объектов в формат JSON.
jQuery.proxy
Эта функция напоминает метод bind (раздел 8.7.4) объекта
Function
, определяемый стандартом ES5. В первом аргументе она принимает функцию, а во втором - объект и возвращает новую функцию, которая вызывает оригинальную как метод указанного объекта. Она не выполняет частичное применение аргументов, как метод
bind.
Функция
jQuery.ргоху
может также вызываться с объектом в первом аргументе и именем свойства во втором. Значение свойства с указанным именем должно быть функцией. В этом случае вызов функции
jQuery.proxy(o.n)
вернет то же, что и вызов
jQuery.proxy(o[n],о).
Функция
jQuery.ргоху
предназначена для использования с механизмом связывания обработчиков событий в библиотеке jQuery. Если в качестве обработчика была связана функция, полученная с помощью
jQuery.proxy,
то удалить ее можно, указав ее оригинал.
jQuery.support
Это свойство подобно свойству
jQuery.browser
, но оно предназначено для переносимой проверки поддерживаемых возможностей (раздел 13.4.3) вместо менее надежного способа определения типа броузера. Значением свойства
jQuery.support
является объект, все свойства которого имеют логические значения и определяют наличие или отсутствие поддержки различных возможностей броузеров. Большинство свойств объекта
jQuery.support
содержат низкоуровневую информацию, используемую внутренними механизмами библиотеки jQuery. В основном они представляют интерес для разработчиков расширений и мало чем полезны прикладным программистам. Одно исключение - свойство
jQuery.support.boxModel
: оно имеет значение true, если броузер использует блочную модель «context-box», соответствующую стандарту CSS, и значение false в ІE6 и ІE7, работающих в режиме совместимости (раздел 16.2.3.1).
jQuery.trim
Эта функция похожа на метод
trim,
добавленный в строки стандартом ES5. Она принимает единственный строковый аргумент и возвращает его копию, из которой удалены начальные и завершающие пробельные символы.
19.8. Селекторы и методы выбора в библиотеке jQuery
На протяжении всей главы мы использовали функцию выбора
$
из библиотеки jQuery, применяя простые CSS-селекторы. Теперь пришло время поближе познакомиться с грамматикой селекторов jQuery, а также с некоторыми методами, позволяющими фильтровать и расширять множество выбранных элементов.
19.8.1. Селекторы jQuery
Библиотека jQuery поддерживает достаточно полное подмножество селекторов, определяемых проектом стандарта «CSS3 Selectors», расширенное нестандартными, но очень удобными псевдоклассами. Основы CSS-селекторов обсуждались в разделе 15.2.5. Здесь мы продолжим это обсуждение и дополнительно познакомимся с более сложными селекторами. Имейте в виду, что в этом разделе описываются селекторы, реализованные в библиотеке jQuery. Многие из них могут использоваться в таблицах стилей CSS, но не все.
Грамматика селекторов делится на три уровня. Вы наверняка уже встречались с простейшими видами селекторов ранее. Селектор «#test» выбирает элемент с атрибутом id, имеющим значение «test». Селектор «blockquote» выбирает все элементы
<blockquote>
в документе, а селектор «div.note» выбирает все элементы
<div>
с атрибутом class, имеющим значение «note». Простые селекторы можно объединять в «комбинированные селекторы», такие как «div.note>p» и «block-quote і», отделяя их символом-комбинатором. И простые, и комбинированные селекторы можно группировать в списки, отделяя их точкой с запятой. Такие группы селекторов являются наиболее универсальной разновидностью селекторов, обычно передаваемых функции
$
. Прежде чем перейти к обсуждению комбинированных селекторов и групп селекторов, необходимо познакомиться с синтаксисом простых селекторов.
19.8.1.1. Простые селекторы
Простой селектор начинается (явно или неявно) с имени тега. Если, к примеруг интерес представляют только элементы
<р>,
простой селектор должен начинаться с «р». Если требуется выбрать элементы независимо от имени тега, используется шаблонный символ «*». Если селектор не начинается с имени тега или шаблонного символа, подразумевается присутствие шаблонного символа.
Имя тега или шаблонный символ определяют начальное множество элементов документа, кандидатов на выбор. Фрагмент селектора, следующий за определением имени тега, состоит из нуля или более фильтров. Фильтры применяются слева направо, в порядке их следования, и каждый из них сужает множество выбранных элементов. Фильтры, поддерживаемые библиотекой jQuery, см. в табл. 19.1.
Обратите внимание, что некоторые из фильтров, перечисленных в табл. 19.1, принимают аргументы в круглых скобках. Следующий селектор, например, выберет абзацы, которые являются первыми или каждыми третьими дочерними элементами своих родителей при условии, что они содержат слово «JavaScript» и не содержат элемент
<а>
.
p:nth-child(3n+1):text(JavaScript):not(:has(a))
Обычно фильтры действуют более эффективно, если им предшествует имя тега. Например, вместо использования простого фильтра «:radio» для выбора радиокнопок лучше использовать селектор «input:radio». Исключение составляют фильтры, проверяющие значение атрибута
id
, которые наиболее эффективно действуют, когда они употребляются автономно. Например, селектор «#address» обычно действует эффективнее, чем более явный селектор «form#address».
19.8.1.2. Комбинированные селекторы
Простые селекторы могут объединяться с использованием специальных операторов, или «комбинаторов», для представления отношений между элементами в дереве документа. В табл. 19.2 перечислены комбинированные селекторы, поддерживаемые библиотекой jQuery. Эти же комбинированные селекторы поддерживаются стандартом CSS3.
Ниже приводится несколько примеров комбинированных селекторов:
"blockquote і" // Соответствует элементу <і> в элементе <blockquote>
"ol > li" // Элемент <li>, прямой потомок элемента <ol>
"#output + *" // Братские элементы, следующие за элементом с id="output"
"div.note > hi + р" // Элемент <р>, следующий за <h1> в <div class="note">
Обратите внимание, что комбинированные селекторы не ограничены комбинациями из двух селекторов: допустимыми являются также комбинации из трех и более селекторов. Обработка комбинированных селекторов выполняется слева направо.
19.8.1.3. Группы селекторов
Группа селекторов, которая является разновидностью селекторов, передаваемых функции
$
(или используемых в таблицах стилей), - это просто список простых или комбинированных селекторов, разделенных запятыми. Группе селекторов соответствуют все элементы, которые соответствуют любому из комбинированных селекторов в группе. С позиции нашего обсуждения даже простой селектор можно рассматривать как комбинированный. Ниже приводится несколько примеров групп селекторов: