Изучение PHP. Запись 2 (Знакомство с jQuery)
Primary tabs
Метод index()
Сегодня удалось позаниматься совсем немного. Самым сложным из изученного за сегодня оказался метод объекта jQuery под названием index(), предназначенный для поиска индекса определенного html элемента в объекте jQuery.
В чем же сложность?
1. В качестве аргумента этому методу передается либо объект html, либо jQuery:
var elems = $('body *'); // найти индекс с использованием базового DOM API var index = elems.index(document.getElementById("oblock")); console.log("Индекс, найденный с использованием DOM-элемента: " + index); // найти индекс с использованием другого объекта // jQuery index = elems.index( $('#oblock') ); console.log("Индекс, найденный с использованием объекта jQuery: " + index);
И ведут они себя по разному: как я понял, если передать в него массив объектов html, то ничего хорошего не получится. Например вот этот код выведет в консоль -1:
var elems = $('body *'); // найти индекс с использованием базового DOM API var index = elems.index(document.getElementsByTagName("img")); console.log("Индекс, найденный с использованием DOM-элемента: " + index);
Зато объект jQuery с несколькими объектами html внутри в качестве аргумента возвращает индекс первого из них. Тут все работает, выводится индекс первого элемента. В моем случае, шестого:
var elems = $('body *'); index = elems.index( $('img') ); console.log("Индекс, найденный с использованием объекта jQuery: " + index); });
2. Можно ввести в качестве аргумента и просто строку c селектором:
var imgElems = $('img:odd'); // найти индекс с использованием селектора index = imgElems.index("body *"); console.log("Индекс, найденный с использованием селектора: " + index);
В таком случае порядок выполнения запросов поменяется - сначала будут выбраны все элементы внутри тега body, а потом уже в них будет искаться элемент, соответствующий первому элементу html в объекте jQuery. То есть, по сути, мы получаем то же самое выражение что и:
index = $("body *").index(imgElems);
Так что функция со своими нюансами )
Цепочки методов
Я и раньше пользовался этой удобнейшей функцией, позволяющей применять методы jQuery буквально со скоростью конвейера:
$('label').css("color","blue").css("font-size", ".75em");
однако раньше я не задавался вопросом, что за этим стоит! Оказывается, методы jQuery всегда возвращают другие (измененные ранее) объекты jQuery! Это многое прояснило для меня. В ходе выполнения цепочки методов мы можем добавлять в объект новые html-элементы, делать из них выборки, применять фильтры, а результат этих махинаций - новый объект jQuery будет возвращен и доступен для изменений следующим звеном цепочки...Гениально!
Одновременное воздействие на множество элементов
Тут всего лишь небольшая ремарка назавтра чтобы не забыть.
Понятно, что jQuery можно использовать для изменения одновременно нескольких элементов в DOM:
$('label').css("color", "blue");
Этот код, к примеру, поменяет цвет всех лейблов. Нужно прояснить для себя в таком случае, в каких случаях применяется метод each().
Ответ: метод each() применяется в случае, если для определенного списка элементов нам необходимо вызвать какую-то написанную нами функцию. Эта функция и передается в качестве параметра в метод each().
- Voronve's blog
- Log in to post comments
- 6002 reads
Comments
vedro-compota
Thu, 05/24/2018 - 15:04
Permalink
Оказывается, методы jQuery
да, это очень удобно когда объект много работает "сам над собой". Возвращая "this" подобного эффекта можно добавить во многих ЯП.
_____________
матфак вгу и остальная классика =)
Voronve
Thu, 05/24/2018 - 21:07
Permalink
Вот за такие вещи я и люблю
Вот за такие вещи я и люблю программирование - как же все продумано!