Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Когда-то давно прочитал в одной из статей о jQuery, зачем в функцию вставляется аргумент с названием undefined.
(function(undefined){console.log(undefined);})(17)
(function() { console.log(undefined); })();после минификации останется таким же(function(undefined) { console.log(undefined); })();станет каким-нибудь вот таким:(function(a) { console.log(a); })();<td>& nbsp;</td> не подцепится через :empty $('<ul>\n</ul>').is(':empty');
false
$('<ul></ul>').is(':empty');
true
The :empty pseudo-class represents any element that has no children at all. Only element nodes and text (including whitespace) are considered. Comments or processing instructions do not affect whether an element is considered empty or not.$.grep: Этот метод похож на Underscore метод _.filter, он также принимает два аргумента, массив элементов и функцию, и возвращает элементы, которые прошли тест функции.Для полноты картины уместно упомянуть (и упоминаю), что оба они служат костылями для браузеров, не имеющих поддержки метода _.filter() работает с любыми коллекциями (а не только с массивами), и временами это весьма удобно.var collection = {
foo: 'bar',
baz: 'qux'
};
var predicate = function (x) {
return x === 'bar';
};
console.log(Array.from(collection).filter(predicate)); // []
console.log(_.filter(collection, predicate)); // [ 'bar' ]
console.log(Array.prototype.filter.call(collection, predicate));
var arrayLikeObj = {
0: 42,
1: 'foo',
2: 101,
3: 300,
4: 'bar',
5: 'baz',
6: Infinity,
7: 'qux',
length: 8
};
console.log(Array.prototype.filter.call(
arrayLikeObj,
function(item) {
return typeof item == 'number';
}
));
// [42, 101, 300, Infinity]
var collection = {
foo: 'bar',
baz: 'qux'
};
var predicate = function (x) {
return collection[x] === 'bar';
};
console.log(Array.prototype.filter.call(Object.keys(collection), predicate).map(function(key) { return collection[key]; }));
Мы обычно передаем строку с именами классов в функцию $.fn.addClass. Но она также принимает функцию. Переданная функция должна возвращать строку с именами классов разделенными пробелом.
$(".parent").on({
click: function() {
$( this ).toggleClass( "active" );
}, mouseenter: function() {
$( this ).addClass( "inside" );
}, mouseleave: function() {
$( this ).removeClass( "inside" );
}
}, '.children'); // <- от тут
$(".parent").on(".children", {...}); хотя, там и так аргументами жонглируют как сумасшедшие…можно запутаться
var onclick = function(){ $(this).toggleClass("active");}
var onenter = function(){ $(this).addClass("inside");}
var onleave = function(){ $(this).removeClass("inside");}
var binds = {
click: onclick,
mouseenter: onenter,
mouseleave: onleave
};
$(".parent").on(binds, '.children');
binds" может быть лишним, но функции в аргументе-объекте — это ад для читателя.
18 неожиданностей при чтении исходного кода jQuery