document.body.addEventListener('click', (ev)=>{
if (ev.target.classList.includes('.mobile-categories')) {
// Тут что-то делаем с ev.target
}
});
var TNextStepButton = /** @class */ (function () {
function TNextStepButton(options) {
this.extend(this, options);
this._element['__obj'] = this;
this._initCheckboxes();
this.isChecked();
}
Object.defineProperty(TNextStepButton.prototype, "enabled", {
/**
* Тут, собственно, производим движения с кнопкой "далее".
*/
set: function (val) {
/**
* Кстати, у HTMLAnchorElement'а нет в прототипе disabled.
* Тут надо выдумывать что-то, или вместо <a> делать <button>
*/
this._element.disabled = !val;
console.log(val, this._element.disabled);
},
enumerable: true,
configurable: true
});
/**
* После каждого изменения в любом из чекбоксов, проверяем их состояние,
* результат передаётся в сеттер элемента кнопки.
*/
TNextStepButton.prototype.isChecked = function () {
var ret = 0;
[].map.call(this.inputs, function (_chb) {
ret = ret | _chb.checked;
});
this.enabled = ret;
return ret;
};
/**
* Инициализация событий чекбоксов
*/
TNextStepButton.prototype._initCheckboxes = function () {
var _that = this;
[].map.call(_that.inputs, function (_chb) {
var _click = _chb.addEventListener('change', function (ev) {
_that.isChecked();
});
});
};
Object.defineProperty(TNextStepButton.prototype, "inputs", {
/**
* Возвращает все чекбоксы из указанного контейнера
*/
get: function () {
return document.querySelectorAll(this.inputsContainerSelector + ' input[type="checkbox"]');
},
enumerable: true,
configurable: true
});
/**
* Некоторое подобие extend'а
*/
TNextStepButton.prototype.extend = function (first, second) {
for (var id in second) {
first[id] = second[id];
}
return first;
};
return TNextStepButton;
}());
document.addEventListener('DOMContentLoaded', function () {
/**
* По загрузке контента создаём объект у кнопки "далее"
*/
var button = new TNextStepButton({
_element: document.getElementById('nextstep'),
inputsContainerSelector: '.checkboxes',
});
});
for (let i = 0; i < blocks.length; i++) {
blocks[i]._clickCnt = 0;
blocks[i].addEventListener('click', function() {
var num = parseFloat(blocks[i].innerText, 10);
if (this._clickCnt > 1) {
this.classList.add('off');
this.classList.remove('on');
sum -= num;
this._clickCnt--;
} else {
this.classList.add('on');
this.classList.remove('off');
sum += num;
this._clickCnt++;
}
blockResult.innerHTML = sum;
});
<div data-type="my_inputs">
<input />
<input />
…
<input />
</div>
document.querySelector('[aria-inputs="my_inputs"] input').addEventListener('blur', function(){
this.target.classList.remove(…);
});
[].map.call(document.querySelectorAll('[data-type="my_inputs"] input'), function (_input) {
_input.addEventListener('focus', function (ev) {
…
});
_input.addEventListener('blur', function (ev) {
…
});
});
var RGroup = (function () {
function RGroup() {
this.group = document.querySelectorAll('input[type="radio"]');
var _that = this;
[].map.call(this.group, function (_el) {
_el.addEventListener('change', _el['_change'] = function (ev) {
if (this.checked) {
this.hasCheck = true;
_that.leaveAll(this);
}
});
_el.addEventListener('click', _el['_click'] = function (ev) {
if (this.hasCheck) {
this.setAttribute('disabled', 'disabled');
_that.group.item(0).checked = true;
}
});
});
}
RGroup.prototype.leaveAll = function (current) {
[].map.call(this.group, function (_el) {
if (_el != current && _el.hasCheck) {
_el.hasCheck = false;
}
});
};
return RGroup;
}());
var rg = new RGroup();
class RGroup {
constructor() {
this.group = document.querySelectorAll('input[type="radio"]');
let _that = this;
[].map.call(this.group, function (_el) {
_el.addEventListener('change', _el['_change'] = function (ev) {
if (this.checked) {
this.hasCheck = true;
_that.leaveAll(this);
}
});
_el.addEventListener('click', _el['_click'] = function (ev) {
if (this.hasCheck) {
this.setAttribute('disabled', 'disabled');
_that.group.item(0).checked = true;
}
});
});
}
leaveAll(current) {
[].map.call(this.group, function (_el) {
if (_el != current && _el.hasCheck) {
_el.hasCheck = false;
}
});
}
}
let rg = new RGroup();