Синтаксис
- Сокращение для готового события от roosteronacid
- Разрывы линий и цепочечность с помощью roosteronacid
- Вложенные фильтры Натана Лонга
- Кэшируйте коллекцию и выполняйте команды в одной строке с помощью roosteronacid
- Содержит селектор по roosteronacid
- Определение свойств при создании элемента с помощью roosteronacid
- Получите доступ к функциям jQuery как к массиву с помощью roosteronacid
- Функция noConflict - освобождение переменной $ Оли
- Изолируйте переменную $ в режиме noConflict с помощью nickf
- Бесконфликтный режим от roosteronacid
Хранилище данных
- Функция данных - связывает данные с элементами с помощью TenebrousX
- Поддержка атрибутов данных HTML5, на стероидах! петуховой кислотой
- Плагин метаданных jQuery от Филиппа Дупановича
оптимизация
- Оптимизировать эффективность сложных селекторов с помощью roosteronacid
- Параметр контекста от lupefiasco
- Сохранить и повторно использовать поиск Натана Лонга
- Создание HTML-элемента и сохранение ссылки. Проверка наличия элемента. Написание собственных селекторов. Автор Andreas Grech
Разное
- Проверить индекс элемента в коллекции по redsquare
- Живые обработчики событий от TM
- Заменить анонимные функции именованными функциями на ken
- Microsoft AJAX Framework и мост JQuery от Slace
- JQuery учебники по Egyamado
- Удалить элементы из коллекции и сохранить цепочечность с помощью roosteronacid
- Объявите $ this в начале анонимных функций Беном
- FireBug lite, плагин Hotbox, сообщает, когда изображение было загружено, и Google CDN от Color Blend
- Разумное использование сторонних скриптов jQuery от harriyott
- Каждая функция Яна Зича
- Плагин расширений форм от Chris S
- Асинхронная каждая функция от OneNerd
- Плагин шаблона jQuery: реализация сложной логики с использованием функций рендеринга от roosteronacid
javascript
jquery
roosteronacid
источник
источник
if ((var someDiv = $("#someDiv")).length) { /* do stuff with someDiv... */ }
someDiv
, что вif
заявлении есть область действия , потому что это не так; JavaScript поддерживает только область действияdata()
Метод jQuery полезен и не очень известен. Это позволяет вам связывать данные с элементами DOM без изменения DOM.источник
Вложенные фильтры
Вы можете вкладывать фильтры (как показано здесь ).
источник
Я действительно не фанат
$(document).ready(fn)
ярлыка. Конечно, это сокращает код, но также снижает читабельность кода. Когда вы видите$(document).ready(...)
, вы знаете, на что смотрите.$(...)
используется слишком многими другими способами, чтобы немедленно иметь смысл.Если у вас есть несколько фреймворков, вы можете использовать,
jQuery.noConflict();
как вы говорите, но вы также можете назначить другую переменную, например:Очень полезно, если у вас есть несколько фреймворков, которые можно свести к
$x(...)
вызовам в стиле.источник
Оооо, давайте не будем забывать метаданные jQuery ! Функция data () великолепна, но она должна быть заполнена с помощью вызовов jQuery.
Вместо того, чтобы нарушать соответствие W3C атрибутам пользовательских элементов, таких как:
Вместо этого используйте метаданные:
источник
data-*
атрибуты автоматически доступны через вызовы.data()
Обработчики живых событий
Установите обработчик события для любого элемента, который соответствует селектору, даже если он добавляется в DOM после начальной загрузки страницы:
Это позволяет вам загружать контент через ajax или добавлять его через javascript и автоматически настраивать обработчики событий для этих элементов.
Аналогично, чтобы остановить обработку живых событий:
Эти обработчики живых событий имеют некоторые ограничения по сравнению с обычными событиями, но они отлично работают в большинстве случаев.
Для получения дополнительной информации см. Документацию jQuery .
ОБНОВЛЕНИЕ:
live()
иdie()
не рекомендуется в jQuery 1.7. Смотрите http://api.jquery.com/on/ и http://api.jquery.com/off/ для аналогичной функциональности замены.ОБНОВЛЕНИЕ2:
live()
долгое время считалось устаревшим, даже до выпуска jQuery 1.7. Для версий jQuery 1.4.2+ до 1.7 используйтеdelegate()
иundelegate()
.live()
Пример ($('button.someClass').live('click', someFunction);
) можно переписать , используяdelegate()
так:$(document).delegate('button.someClass', 'click', someFunction);
.источник
Замените анонимные функции именованными функциями. Это на самом деле заменяет контекст jQuery, но он начинает играть больше, чем при использовании jQuery, из-за его зависимости от функций обратного вызова. Проблемы, с которыми я сталкиваюсь с встроенными анонимными функциями, заключаются в том, что их сложнее отлаживать (гораздо проще взглянуть на стек вызовов с четко именованными функциями вместо 6 уровней «анонимных»), а также тот факт, что несколько анонимных функций в одном и том же Цепочка jQuery может стать громоздкой для чтения и / или обслуживания. Кроме того, анонимные функции обычно не используются повторно; с другой стороны, объявление именованных функций побуждает меня писать код, который с большей вероятностью будет использоваться повторно.
Иллюстрация; вместо:
Я предпочитаю:
источник
this
, вы не можете получить «правильный» OO без использования вложений. Я обычно иду на компромисс:$('div').click( function(e) { return self.onClick(e) } );
Определение свойств при создании элемента
В jQuery 1.4 вы можете использовать литерал объекта для определения свойств при создании элемента:
... Вы даже можете добавить стили:
Вот ссылка на документацию .
источник
вместо использования другого псевдонима для объекта jQuery (при использовании noConflict) я всегда пишу свой код jQuery, оборачивая все это в замыкание. Это можно сделать в функции document.ready:
В качестве альтернативы вы можете сделать это так:
Я считаю это самым портативным. Я работал над сайтом, который использует и Prototype, и jQuery одновременно, и эти методы позволили избежать всех конфликтов.
источник
instanceOf
не будет работать, толькоinstanceof
. И все равно это не сработает, потомуjQuery instanceof jQuery
что вернетсяfalse
.$ == jQuery
это правильный способ сделать это.Проверьте индекс
У jQuery есть .index, но его неудобно использовать, так как вам нужен список элементов и передайте элемент, индекс которого вы хотите:
Следующее намного проще:
Если вы хотите узнать индекс элемента в наборе (например, элементов списка) в неупорядоченном списке:
источник
index()
и получить индекс от его родителя.Сокращение для готового события
Явный и многословный способ:
Сокращение:
источник
В основной функции jQuery укажите параметр контекста в дополнение к параметру селектора. Задание параметра context позволяет запускать jQuery из более глубокой ветви в DOM, а не из корня DOM. Учитывая достаточно большой DOM, указание параметра контекста должно привести к повышению производительности.
Пример: Находит все входные данные типа радио в первой форме в документе.
Ссылка: http://docs.jquery.com/Core/jQuery#expressioncontext
источник
$(document.forms[0]).find('input:radio')
делает то же самое. Если вы посмотрите на источник jQuery, вы увидите: если вы передадите второй параметр$
, он на самом деле вызовет.find()
.$('form:first input:radio')
?Не только jQuery, но я создал небольшой мост для jQuery и MS AJAX:
Очень хорошо, если вы делаете много ASP.NET AJAX, так как MS поддерживает jQuery, теперь с хорошим мостом означает, что действительно легко выполнять операции jQuery:
Таким образом, приведенный выше пример не очень хорош, но если вы пишете серверные серверные элементы управления ASP.NET AJAX, вы можете легко использовать jQuery в своей реализации клиентского управления.
источник
Оптимизировать производительность сложных селекторов
Запрос подмножества DOM при использовании сложных селекторов резко повышает производительность:
источник
Говоря о Советы и хитрости, а также некоторые учебники. Я нашел эти серии обучающих программ ( «Jquery для начинающих» Absolute Video Series) по Джефри Пути очень полезны.
Он нацелен на тех разработчиков, которые плохо знакомы с jQuery. Он показывает, как создавать много интересных вещей с помощью jQuery, таких как анимация, создание и удаление элементов и многое другое ...
Я многому научился от этого. Он показывает, как легко использовать jQuery. Теперь мне это нравится, и я могу читать и понимать любой скрипт jQuery, даже если он сложный.
Вот один пример, мне нравится « Изменение размера текста »
1- jQuery ...
2- CSS Styling ...
2- HTML ...
Очень рекомендую эти уроки ...
http://blog.themeforest.net/screencasts/jquery-for-absolute-beginners-video-series/
источник
Асинхронная функция each ()
Если у вас действительно сложные документы, в которых при выполнении jquery каждая функция () блокирует браузер во время итерации, и / или в Internet Explorer появляется сообщение « Вы хотите продолжить выполнение этого сценария », это решение сохранит день.
Первый способ, которым вы можете использовать это, как и каждый ():
Необязательный второй параметр позволяет задать скорость / задержку между итерациями , которые могут быть полезны для анимации ( следующий пример будет ждать 1 секунду между ними итерациями ):
Помните, что поскольку это работает асинхронно, вы не можете полагаться на то, что итерации будут завершены до следующей строки кода, например:
Я написал это для внутреннего проекта, и, хотя я уверен, что его можно улучшить, он сработал для того, что нам было нужно, поэтому надеюсь, что некоторые из вас сочтут его полезным. Спасибо -
источник
Синтаксическая стенография - вещь, кеширующая коллекцию объектов и выполняющая команды в одной строке:
Вместо:
Я делаю:
Несколько «реальный» вариант использования может быть чем-то вроде этого:
источник
$(this).siblings().removeClass("hover")
. Я знаю, это звучит как мелочь, но каждый раз, когда вы меняете DOM, может быть запущена другая перерисовка браузера. Другие возможности включают события, присоединенные к DOMAttrModified, или классы, изменяющие высоту элемента, которые могут запускать другие прослушиватели событий «изменения размера».cache.not(this).removeClass("hover")
Мне нравится объявлять
$this
переменную в начале анонимных функций, поэтому я знаю, что могу ссылаться на jQueried this.Вот так:
источник
Сохранить объекты jQuery в переменных для повторного использования
Сохранение объекта jQuery в переменную позволяет вам повторно использовать его без необходимости искать его в DOM.
(Как предложил @Louis, теперь я использую $, чтобы указать, что переменная содержит объект jQuery.)
В качестве более сложного примера, скажем, у вас есть список продуктов в магазине, и вы хотите показать только те, которые соответствуют критериям пользователя. У вас есть форма с флажками, каждый из которых содержит критерии. Флажки имеют имена, такие как
organic
иlowfat
, и продукты имеют соответствующие классы -.organic
и т. Д.Теперь вы можете продолжать работать с этим объектом jQuery. Каждый раз, когда устанавливается флажок (чтобы установить или снять флажок), начните с основного списка продуктов и отфильтруйте его в соответствии с установленными флажками:
источник
$
впереди. напримерvar $allItems = ...
$
указывает на то, что это объект jQuery, который облегчил бы визуальную дифференциацию от других переменных.Кажется, что большинство интересных и важных советов уже были упомянуты, так что это лишь небольшое дополнение.
Небольшой совет - это функция jQuery.each (object, callback) . Все, вероятно, используют jQuery.each (обратный вызов) для перебора самого объекта jQuery, потому что это естественно. Утилита jQuery.each (object, callback) выполняет итерации по объектам и массивам. Долгое время я почему-то не понимал, что это может быть, за исключением другого синтаксиса (я не против написания всех модных циклов), и мне немного стыдно, что я понял его основную силу только недавно.
Дело в том, что поскольку тело цикла в jQuery.each (object, callback) является функцией , вы каждый раз получаете новую область видимости в цикле, что особенно удобно при создании замыканий в цикле.
Другими словами, типичная распространенная ошибка - сделать что-то вроде:
Теперь, когда вы вызываете функции в
functions
массиве, вы будете трижды предупреждены о содержимом,undefined
которое, скорее всего, не то, что вы хотели. Проблема в том, что существует только одна переменнаяi
, и все три замыкания относятся к ней. Когда цикл заканчивается, окончательное значениеi
равно 3 иsomeArrary[3]
равноundefined
. Вы можете обойти это, вызвав другую функцию, которая создаст для вас замыкание. Или вы используете утилиту jQuery, которая в основном сделает это за вас:Теперь, когда вы вызываете функции, вы получаете три оповещения с содержанием 1, 2 и 3, как и ожидалось.
В общем, это ничего, что вы не могли бы сделать сами, но приятно иметь.
источник
Доступ к функциям jQuery, как к массиву
Добавить / удалить класс на основе логического ...
Это более короткая версия ...
Не так много вариантов использования для этого. Тем не менее; Я думаю, что это аккуратно :)
Обновить
На случай, если вы не читаете комментарий, ThiefMaster указывает, что toggleClass принимает логическое значение , которое определяет, должен ли класс быть добавлен или удален. Итак, что касается моего примера кода выше, это был бы лучший подход ...
источник
$('selector').toggleClass('name_of_the_class', b);
хотя.Обновить:
Просто включите этот скрипт на сайт, и вы получите консоль Firebug, которая появляется для отладки в любом браузере. Не совсем полнофункциональный, но довольно полезный! Не забудьте удалить его, когда вы закончите.
Проверьте эту ссылку:
Из хитростей CSS
Обновление: я нашел что-то новое; это JQuery Hotbox.
JQuery Hotbox
Google размещает несколько библиотек JavaScript в Google Code. Загрузка этого оттуда экономит пропускную способность, и она загружается быстро, потому что она уже была кэширована.
Или
Вы также можете использовать это, чтобы сказать, когда изображение полностью загружено.
«Console.info» firebug, который вы можете использовать для выгрузки сообщений и переменных на экран без использования блоков предупреждений. «console.time» позволяет легко настроить таймер, чтобы обернуть кучу кода и посмотреть, сколько времени это займет.
источник
По возможности используйте методы фильтрации по псевдоселекторам, чтобы jQuery мог использовать querySelectorAll (что намного быстрее, чем sizzle). Рассмотрим этот селектор:
Такой же выбор можно сделать, используя:
Что должно быть быстрее, потому что первоначальный выбор .class совместим с QSA
источник
Удалить элементы из коллекции и сохранить возможность объединения
Учтите следующее:
filter()
Функция удаляет элементы из объекта JQuery. В этом случае: Все li-элементы, не содержащие текст «Один» или «Два», будут удалены.источник
Изменение типа элемента ввода
Я столкнулся с этой проблемой, когда пытался изменить тип элемента ввода, уже подключенного к DOM. Вы должны клонировать существующий элемент, вставить его перед старым элементом, а затем удалить старый элемент. В противном случае это не сработает:
источник
Разумное использование сторонних скриптов jQuery, таких как проверка поля формы или анализ URL. Стоит посмотреть, о чем идет речь, чтобы вы знали, когда в следующий раз встретите требование JavaScript.
источник
Разрывы и цепочки
При объединении нескольких вызовов в коллекции ...
Вы можете повысить удобочитаемость с помощью переносов строк. Нравится:
источник
Используйте .stop (true, true) при запуске анимации, чтобы предотвратить повторение анимации. Это особенно полезно для анимации ролловера.
источник
Использование самозапускающихся анонимных функций в вызове метода, например,
.append()
для перебора чего-либо. IE:Я использую это, чтобы перебрать вещи, которые были бы большими и неудобными, чтобы вырваться из моей цепочки, чтобы построить.
источник
Поддержка атрибутов данных HTML5, на стероидах!
Функция данных была упомянута ранее. С его помощью вы можете связать данные с элементами DOM.
Недавно команда jQuery добавила поддержку пользовательских атрибутов данных data5 * в HTML5 . И как будто этого было недостаточно; они принудительно снабжают функцию данных стероидами, что означает, что вы можете хранить сложные объекты в форме JSON непосредственно в вашей разметке.
HTML:
JavaScript:
источник