Ответы на вопросы на собеседование jQuery (часть 2).
- Как проверить, что элемент пустой?
Есть 2 способа, чтобы проверить пустой элемент или нет. Первый мы можем проверить это с помощью селектора ":empty".
И второй способ используя метод "$.trim()".
- Как проверить существует ли элемент в JQuery?
Используя свойство JQuery length, мы можем убедиться существует элемент или нет.
- Для чего используется функция jQuery ".each()"?
Функция .each() применяется непосредственно на коллекции jQuery. Она выполняет итерацию по каждому соответствующему элементу в коллекции и выполняет обратный вызов на этом объекте. Это означает, что каждый раз, когда выполняется указанная функция (а выполняется она один раз для каждого совпавшего элемента) ключевое слово 'this' указывает на конкретный элемент DOM. Помните, что слово 'this' НЕ указывает на объект jQuery. Кроме того, запущенная функция передает единственный аргумент, который показывает позицию элемента в составе набора совпавших элементов (integer, отсчет с 0).
- Какая разница между $('div') и $('<div/>') в jQuery?
$('<div/>') - создает новый элемент DIV, однако не добавляет его в DOM дерево.
$('div') - выбирает все div элементы, присутствующие на странице.
- Какая разница между parent(), parents(), closest() в jQuery?
.parent([selector]) - находит родителя строго на один уровень вверх.
Пример: $(this).parent()
Для того чтобы получить родителя от родителя нужно применять цепочку вызовов (произвольной глубины): $(this).parent().parent()....
.parents([selector]) - возвращает список всех родительских узлов, и, может содержать селектор, для уточнения набора родителей.
Пример: $(this).parents("li.test")
.closest(selector, [context]) - возвращает первый ближайший родительский узел или же текущий узел - которые удовлетворяют условию в селекторе (селектор обязательный). Может принимать контекст для уточнения поиска (набор узлов заранее выбранных).
Основные отличия его от .parents():
- может вернуть и текущий узел
- обязательный селектор
- возвращает только первый элемент который попал под условие, поиск ведется тоже вверх по дереву.
- Какая разница между get() и eq() методами в jQuery?
Отметим различия методов get(i) и eq(i). Первый возвращает непосредственно DOM-объект элемента, идущего под номером i в наборе (кстати, нумерация начинается с 0). К такому элементу вы не сможете применить методы jQuery, зато сможете применить стандартные javascript методы. Метод eq(i) наоборот, возвращает i-й элемент в таком виде, что к нему можно применять методы jQuery. Вообще, для того, чтобы к элементам можно было применять методы библиотеки jQuery, они должны находиться в так называемом объекте jQuery, именно его возвращает функция $().
- Как добавить анимацию в jQuery?
Ключевым методом, на которой базируются все остальные, является метод animate(), с помощью которого можно задавать плавное изменение различных CSS-свойств:
.animate(properties, [duration], [easing], [callback])
properties - список CSS-свойств, участвующих в анимации и их конечных значений. Задаются объектом, в формате {ключ:значение}, например:{opacity: 50, width: 100, height: 200}.
duration - продолжительность выполнения анимации. Может быть задана в миллисекундах или строковым значением 'fast' или 'slow' (200 и 600 миллисекунд).
easing - изменение скорости анимации (будет ли она замедляется к концу выполнения или наоборот ускорится). Задается строковым значением: "linear" и "swing" (для равномерной анимации и анимации с ускорением). Другие варианты можно найти в плагинах.
callback - функция, которая будет вызвана после завершения анимации.
Пример. Пусть у нас есть элемент div с каким-нибудь текстом. Мы хотим плавно скрыть этот элемент, заменить текст, и плавно сделать элемент видимым:
значения "hide", "show" означают исчезновение и появление элемента, за счет параметра, к которому они применены.
- Как отключить JQuery анимацию?
Чтобы отменить выполнения всех анимаций используют "jQuery.fx.off". Установив это свойство в true, вы отключите все анимации, которые можно выполнять с помощью jQuery. Для того, что бы анимации заработали вновь, необходимо установить это свойство обратно в false.
Простой пример:
- Как остановить текущую запущенную анимацию в JQuery?
Используя метод ".stop()". Он останавливает выполнение текущей анимации.
- В чем разница между методами .empty () .remove () и .detach () в JQuery?
.empty() - очищает содержание выбранных элементов, т.е. удаляет все узлы-потомки (включая тексты) из выбранных элементов, все обработчики событий и внутренние кэш-данные.
.remove() - удаляет все выбранные элементы из DOM (указанный элемент и всех его потомков)
.detach() - удаляет все выбранные элементы из DOM (указанный элемент и всех его потомков), но метод .detach() сохраняет данные jQuery, ассоциированные с удаляемым элементом и поэтому они могут быть восстановлены.
- Какая разница между .bind() .live() .delegate() и .on()?
.bind() - навешивает обработчик непосредственно на элемент (когда тот есть в DOM-е). При удалении элемента так-же удаляется.
.live() - навешивает обработчик на document, используется делегирование (всплытие событий). Позволяет создать обработчик до того, как элемент появится в DOM-е. При удалении элумента обработчик не удаляется, а просто перестает срабатывать. Если в DOM снова вставить элемент, подходящий под селектор, обработчик снова отработает.
.delegate() - точно так-же, как и live, использует делегирование, только явно указывается узел, на который навешивается обработчик. (удобно для разработки модулей, или как их еще называют, виджетов).
.on() - объединяет возможности как bind, так и delegate (зависит от формы использования). Единый метод введен для того, чтобы не возникали вопросы какой метод использовать.
- Как создать клон объекта в JQuery?
Для клонирования в JQuery есть метод .clone() - создает полную копию выбранных элементов.
.clone( [withDataAndEvents] ) где withDataAndEvents - логическое значение, указывающее нужно ли копировать данные и обработчики событий у выбранных элементов. По умолчанию false. Пример:
- В чем разница между prop и attr?
.prop() - возвращает/изменяет значение свойств выбранных элементов..attr() - получает/устанавливает значение атрибутов выбранных элементов.
Метод .prop() появился в версии 1.6, многие ошибочно используют метод .attr() для доступа к свойствам элементов и модификации их значений. Дело в том, что с версии 1.6 .attr() работает непосредственно с атрибутом элемента и в некоторых случаях результат не совсем ожидаемый.
Например, если мы хотим узнать состояние чекбокса, то .attr() может выдать его значение по умолчанию (которое видно в исходниках HTML страницы). В этом случае нам нужно использовать метод .prop() - он вернет текущее значение свойства элемента.
- Что такое event.preventDefault?
В jQuery есть один интересный метод preventDefault(), который позволяет предотвратить возникновение "действия по умолчанию" для конкретного события. Например, если в разметке есть гиперссылка, но мы хотим использовать эту ссылку как кнопку button - т.е. без перехода по URL, заданному в атрибуте href, то используется как раз preventDefault(). После этого, всё, что необходимо сделать, - это добавить вызов preventDefault() в обработчик события клика мышью.
- В чем разница между event.PreventDefault и event.stopPropagation?
.event.preventDefault() - если будет вызван данный метод, то действие события по умолчанию не будет выполнено. К примеру, клик по ссылке не отправит пользователя по новому URL. Для определения, был ли вызван данный метод, можем воспользоваться функцией event.isDefaultPrevented()..event.stopPropagation() - станавливает "всплытие" вызова события к родительским элементам. Данный метод работает для собственных событий, вызванных методом trigger(). Заметьте, что данный метод не будет применён к другим обработчикам событий.
- Как проверить есть переменная числом, используя JQuery 1.7+?
С помощью функции "IsNumeric()", которая была введена с JQuery 1.7.
- Как проверить тип данных переменной в JQuery?
С помощью $.type() - определяет класс заданного элемента (речь идет о внутренних классах javascript: string, boolean и т.д.). Функция имеет один вариант использования:$.type(Object) где Object - элемент, класс которого требуется определить.
- Как привязать обработчик события к выбранному элементу, которое должно быть выполнено только один раз?
Метод one() назначает обработчик одному или более событиям для каждого совпавшего элемента, который выполняется единожды. Обработчик запускается лишь раз для каждого элемента. Обработчик события принимает объект event, который можно использовать для предотвращения поведения по умолчанию. Пример:
- Можно ли удерживать или задержать выполнение document.ready на некоторое время?
Да это возможно. Начиная с версии 1.6 в jQuery появился новый метод ".holdReady()". Метод позволяет приостановить выполнение обработчиков события ready.
jQuery.holdReady(hold) - где hold в случае true приостанавливает выполнение обработчиков события ready, в случае false - возобновляет.
Цепочкой методов называют последовательный вызов нескольких методов jQuery. Для удобочитаемости, цепочки часто пишут с переносами:
Например код:
с использованием цепочки методов данный код будет выглядеть так:
Да. JQuery может быть использована для создания Ajax запроса.
Сделать AJAX запрос можно с помощью следующих методов:
В версии jQuery 1.5 было внесено много изменений, однако, основные изменения коснулись внедрения объекта Deferred(), они помогают в обработке асинхронных функции, такие как Ajax.
Благодаря отложенным объектам, можно определять множество функций обратного вызова для какого-то результата, и любой из этих вызовов может быть использован после выполнения какой-либо задачи. Это может использоваться как в асинхронных, так и в обычных целях.
Метод finish() останавливает текущую анимацию, удаляет все очереди анимации и завершает все анимации для соответствующих элементов.
jQuery.holdReady(hold) - где hold в случае true приостанавливает выполнение обработчиков события ready, в случае false - возобновляет.
- Что такое цепочка методов в jQuery?
Цепочкой методов называют последовательный вызов нескольких методов jQuery. Для удобочитаемости, цепочки часто пишут с переносами:Например код:
с использованием цепочки методов данный код будет выглядеть так:
- Можем ли мы использовать JQuery, чтобы сделать AJAX запрос?
Да. JQuery может быть использована для создания Ajax запроса.
- Какими методами можно сделать AJAX запрос в JQuery?
Сделать AJAX запрос можно с помощью следующих методов: - load() - загрузка HTML кода в необходимый нам DOM элемент на странице.
- $.getJSON() - загружает данные в формате JSON (удобней и быстрее нежели XML).
- $.getScript() - данная функция загружает и выполняет локальный JavaScript.
- $.get() - загружает страницу, используя для передачи данных GET запрос.
- $.post() - данный метод аналогичен предыдущему, лишь передаваемые данные уйдут на сервер посредством POST’а.
- $.ajax() - это самый основной метод, а все последующие методы лишь обертки для метода jQuery.ajax.
- Что такое отсроченные(Deferred) объекты в jQuery?
В версии jQuery 1.5 было внесено много изменений, однако, основные изменения коснулись внедрения объекта Deferred(), они помогают в обработке асинхронных функции, такие как Ajax.Благодаря отложенным объектам, можно определять множество функций обратного вызова для какого-то результата, и любой из этих вызовов может быть использован после выполнения какой-либо задачи. Это может использоваться как в асинхронных, так и в обычных целях.
- Что делает метод finish()?
Метод finish() останавливает текущую анимацию, удаляет все очереди анимации и завершает все анимации для соответствующих элементов.
- Можно ли не указывать протокол в URL когда jQuery ссылается на CDNs?
Да. код ниже полностью рабочий.
- Что такое Jquery плагины и какие преимущества их использования?
jQuery плагин это часть кода, написанного в стандартном JavaScript файле. Эти файлы предоставляют полезные функции, которые могут быть использованы вместе с методами библиотеки jQuery. JQuery плагинины очень полезны, это части кода, которые уже кем-то написаны и могут быть использованы повторно, что позволяет экономить время разработки.
jQuery UI - это библиотека виджетов и плагинов, основанная на JavaScript библиотеке jQuery, которую можно использовать для создания интерактивных веб-приложений.
0 коментарі :
Отправить комментарий