openPopup
генерирует событие, например, popup:open
:var evt = new CustomEvent('popup:open', {
bubbles: true,
detail: 'здесь любые данные'
});
popupDOMElement.dispatchEvent(evt);
init
) подписаться на это событие:class Gallery {
init() {
popupDOMElement.addEventListener('popup:open', this.reInit.bind.this)
}
}
popupDOMElement
должен уже существовать.on
и trigger
из jQuery. методично, всерьёз и надолго погрузиться в тему
if(2 > 1) {
true
} else {
false
}
аналогичная(2 > 1) ? true : false
var a = [{
"id": "1",
"title": "Дом1"
}, {
"id": "2",
"title": "Зал2"
}, {
"id": "3",
"title": "Дом3"
}, {
"id": "4",
"title": "Зал4"
}];
for (let i of a) {
i.active = false;
}
console.log(a);
'/^\+372((( |-)?\d){8,})$/'
. const a = [ 'a', 'b', 'c', 'd' ];
const b = [ 'a', 'b', 'x', 'y', 'z' ];
const c = a.filter(n => b.indexOf(n) === -1);
// или
const c = a.filter(n => !b.includes(n));
function diff(data1, data2, key = n => n) {
const getKey = key instanceof Function ? key : n => n[key];
const keys = new Set(Array.from(data2, getKey));
return Array.prototype.filter.call(data1, n => !keys.has(getKey(n)));
}
diff([1, 2, 3], [2]) // [1, 3]
diff([{id: 1}, {id: 2}, {id: 3}], [{id: 1}, {id: 3}], 'id') // [{id: 2}]
diff('AbCdE', 'aBc', n => n.toLowerCase()) // ['d', 'E']
</body>
, если разместить их в шапке браузер будет тянуть их и пока не скачает не отрендерит html. Проблема решается атрибутом async, но теряется последовательность и тут приходит на помощь defer он отложит загрузку скриптов и в тоже время сохранит последовательность (но не включит асинхронность). async defer вкупе не работают. Если указывают async, а рядом defer то это лишь просто fallback атрибу для браузеров не поддерживающих async.FROM `alias`
JOIN `items` ON `items`.`product_id` = SUBSTR(`alias`.`field2`, 12)