- PVSM.RU - https://www.pvsm.ru -
В статье я расскажу о пяти методах jQuery, которые я нашел для себя полезными и о которых, по моим наблюдениям, мало кто знает.
Я с jQuery работаю уже около двух лет, но до недавнего времени не использовал эти методы, так как и без них можно обойтись. Но с ними может быть на много легче.
jQuery.grep(array, function(elementOfArray, indexInArray) [, invert])
— как можно догадаться с названия, метод фильтрует элементы массива полагаясь на результат функции (оригинальный массив не изменяется). У jQuery также есть похожий метод .filter()
[2] который служит для фильтрации набора найденных элементов.
Нужно выбрать из массива только числа кратные 3:
var arr = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15];
console.log($.grep(arr, function(el){
return el % 3 === 0
}));
// [3, 6, 9, 12, 15]
.map( callback(index, domElement) )
— метод полезен тем, что дает возможность без написания циклов сделать преобразования над выбранными элементами или массивом (для массивов нужно использовать jQuery.map()
[4]).
Если функция возвращает null или undefined, то элемент будет проигнорирован.
Выведем адреса всех ссылок на странице:
var links = $('a').map(function(el){
return this.href;
}).get().join("n");
console.log(links);
jQuery.proxy( function, context )
— может быть полезным, если нужно передать callback но установить для него свой контекст (значение переменной this
).
var myObj = {
message: 'hello',
alertMessage: function(){
// переменная this ссылается на объект myObj,
// а не на элемент, по которому кликнули
alert(this.message);
return false;
}
};
$('a').click($.proxy(myObj.alertMessage, myObj));
.prop( propertyName, value )
— этот метод появился в версии 1.6 и я использую его примерно с того же времени. Но решил упомянуть здесь потому, что многие ошибочно используют метод .attr()
[7] для доступа к свойствам элементов и модификации их значений.
Дело в том, что с версии 1.6 .attr()
работает непосредственно с атрибутом элемента и в некоторых случаях результат не совсем ожидаемый.
Например, если мы хотим узнать состояние чекбокса, то .attr()
может выдать его значение по умолчанию (которое видно в исходниках HTML страницы). В этом случае нам нужно использовать метод .prop()
— он вернет текущее значение свойства элемента.
Инвертируем все чекбоксы на странице:
$('input').prop('checked', function(el, oldVal){
return !oldVal;
});
.serializeArray()
— очень простой способ сеарилизации данных формы в виде массива или строки (в этом случае используйте .serialize()
[9]). Метод возвращает массив, который потом например можно через ajax передать на сервер.
var arr = $('#myForm').serializeArray();
// в arr будет массив объектов {name: "field-name", value: "field-value"}
Автор: utf
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/javascript/10324
Ссылки в тексте:
[1] jQuery.grep(): http://api.jquery.com/jQuery.grep/
[2] .filter()
: http://api.jquery.com/filter/
[3] .map(): http://api.jquery.com/map/
[4] jQuery.map()
: http://api.jquery.com/jQuery.map/
[5] jQuery.proxy(): http://api.jquery.com/jQuery.proxy/
[6] .prop(): http://api.jquery.com/prop/
[7] .attr()
: http://api.jquery.com/attr/
[8] .serializeArray(): http://api.jquery.com/serializeArray/
[9] .serialize()
: http://api.jquery.com/serialize/
Нажмите здесь для печати.