Манипуляция с элементами
и события
Поиск элементов относительно выборки
// Получить первый пункт списка на странице
var listItem = $( 'li' ).first(); // и .last()
// Получить родственные элементы этого пункта списка
var siblings = listItem.siblings();
// Получить следующего родственника этого пункта списка
var nextSibling = listItem.next(); // и .prev()
// Получить родителя этого пункта списка
var list = listItem.parent();
// Получить пункты списка являющихся непосредственными потомками list
var listItems = list.children();
// Получить ВСЕ пункты списка из list, включая вложенные
var allListItems = list.find( 'li' );
// Найти всех предков этого пункта списка с классом module
var modules = listItem.parents( '.module' );
// Найти ближайшего предка этого пункта списка с классом module
var module = listItem.closest( '.module' );
Размещение элементов в документе
var listItem = $( '#my-unordered-list li' ).first();
listItem.appendTo( '#my-unordered-list' )
.appendTo() - добавление элемента в элемент
var listItem = $( '#my-unordered-list li' ).first();
$( '#my-unordered-list' ).append( listItem );
.append() - добавление внутрь текущего элемента, другой элемент
var listItems = $( '#my-unordered-list li' );
listItems.first().insertAfter( listItems.last() );
.insertAfter() - вставить элемент после другого элемента
var listItems = $( '#my-unordered-list li' );
listItems.last().after( listItems.first() );
.after() - вставить после текущего элемента, другой элемент
Клонирование
var clones = $( 'li' ).clone();
clones.html(function( index, oldHtml ) {
return oldHtml + '!!!';
});
$( '#my-unordered-list' ).append( clones );
Удаление
var removedListItem = $( '#my-unordered-list li' ).first().remove();
var detachedListItem = $( '#my-unordered-list li' ).first().detach();
var replacedListItem = $( '#my-unordered-list li' ).first()
.replaceWith( '<li>новое!</li>' );
Есть три способа для удаления элементов из документа: .remove(), .detach() и .replaceWith(). Каждый метод служит конкретной цели.
Создание элемента
// Creating new elements from an HTML string.
$( "<p>This is a new paragraph</p>" );
$( "<li class=\"new\">new list item</li>" );
// Creating a new element with an attribute object.
$( "<a/>", {
html: "This is a <strong>new</strong> link",
"class": "new",
href: "foo.html"
});
// Getting a new element on to the page.
var myNewElement = $( "<p>New element</p>" );
myNewElement.appendTo( "#content" );
myNewElement.insertAfter( "ul:last" ); // This will remove the p from #content!
$( "ul" ).last().after( myNewElement.clone() ); // Clone the p so now we have two.
После создания элемента можем его переместить
События
$( 'li' ).click(function( event ) {
console.log( 'clicked', $( this ).text() );
});
События
Родное имя события | Сокращённый метод |
---|---|
click | .click() |
keydown | .keydown() |
keypress | .keypress() |
keyup | .keyup() |
mouseover | .mouseover() |
mouseout | .mouseout() |
mouseenter | .mouseenter() |
mouseleave | .mouseleave() |
scroll | .scroll() |
focus | .focus() |
blur | .blur() |
resize | .resize() |
Правильное назначение события
$( 'li' ).on( 'click', function( event ) {
console.log( 'clicked', $( this ).text() );
});
$( 'li' ).trigger( 'click' );
$( 'li' ).click(); //короткий вызов
После того как к элементу «привязали» обработчик событий, вы можете инициировать его через jQuery.
$( 'li' ).off( 'click' );
Событие можно отвязать с помощью метода .off()
Привязка нескольких событий
$( 'input[type="text"]' ).on('focus blur', function() {
console.log( 'Для поля <input> получен или потерян фокус' );
});
$( window ).on( 'resize.foo scroll.bar', function() {
console.log( 'Окно изменило размеры или прокручено!' );
});
Привязка событий к созданным
элементам в будущем
$('.accordion').on('click', 'a', function(e){
//Какое-то действие
});
Объект события
$( document ).on( 'click', function( event ) {
console.log( event.type ); // Тип события, к примеру click
console.log( event.which ); // Нажатая кнопка или клавиша
console.log( event.target ); // Источник события
console.log( event.pageX ); // Координата мыши по оси X
console.log( event.pageY ); // Координата мыши по оси Y
});
Внутри обработчика событий
$( 'input' ).on( 'keydown', function( event ) {
// this: Элемент, с которым связан обработчик событий
// event: Объект события
// Сменить цвет фона элемента <input> при нажатии на backspace
// на красный, в противном случае на зелёный
$( this ).css( 'background', event.which === 8 ? 'red' : 'green' );
});
jQuery - Манипуляция с элементами и События
By Alexey Kalyuzhnyi
jQuery - Манипуляция с элементами и События
- 2,144