.wrap
нет класса done
, так что результат вызова $('.wrap.done')
окажется пустым.$(document).on('click', '.wrap.done', function() {
$('.form, .wrap').removeClass('done');
});
done
элемент .wrap
не виден, кликать некуда, так что неважно, есть класс или нет - можно цеплять обработчик клика просто к .wrap
. .one:hover + .two,
.two:hover {
/* показываем элемент .two */
Вообще класс нужно добавлять.
.two
тот же обработчик ховера, что и к .one
:$('.one, .two').hover(function() {
$('.two').toggleClass('show');
});
function pasGen(chars, length) {
let prev = null;
return Array
.from({ length }, () => {
const i = Math.random() * chars.length | 0;
return chars[prev = (i + (i === prev)) % chars.length];
})
.join('');
}
$('.mysubmit').prop('disabled', arr.indexOf(str) !== -1);
$('.mysubmit').prop('disabled', arr.some(n => str.indexOf(n) !== -1));
const childSelector = 'img';
const className = 'myclass';
$(`.${className}:not(:has(> ${childSelector}))`).removeClass(className);
document.querySelectorAll(`.${className}`).forEach(n => {
n.classList.toggle(className, !!n.querySelector(`:scope > ${childSelector}`));
});
const elems = document.getElementsByClassName(className);
for (let i = elems.length; i--;) {
if (!Array.prototype.some.call(elems[i].children, n => n.matches(childSelector))) {
elems[i].classList.remove(className);
}
}
reader.onload = function(e) {
console.log(this.result);
};
reader.readAsText(file);
[...document.getElementsByClassName('cls')].reduce((max, n) => {
const val = +n.innerText;
return val > max[1] ? [ n, val ] : max;
}, [ null, -Infinity ])[0].style.color = 'red';
const text = [
'hello, world!!',
'fuck the world',
'fuck everything',
];
$('table').on('click', 'td', function() {
const $this = $(this);
const index = (+$this.data('index') + 1) % text.length;
$this.text(text[index]).data('index', index);
}).find('td').data('index', -1);
document.body.appendChild(anchor)
. А потом уже делать click. function createTree(data, levelKey, childrenKey) {
const tree = [];
data.forEach(n => {
let arr = tree;
for (let level = 0; n[levelKey] > level++;) {
arr = arr[arr.length - 1][childrenKey];
}
arr.push(Object.assign({ [childrenKey]: [] }, n));
});
return tree;
}
const tree = createTree([
{ id: 1, title: 'test1', level: 0 },
{ id: 2, title: 'test2', level: 1 },
{ id: 3, title: 'test3', level: 2 },
{ id: 4, title: 'test4', level: 1 },
{ id: 5, title: 'test5', level: 0 },
], 'level', 'nodes');
$('.calculator_price')
.find('.calculator_price__item:lt(6)')
.css('display', 'flex');
$('.calculator_price .calculator_price__item')
.filter((i, n) => $(n).index() < 6)
.css('display', 'flex');
document.querySelectorAll('.calculator_price').forEach(n => {
[...n.querySelectorAll('.calculator_price__item')]
.slice(0, 6)
.forEach(n => n.style.display = 'flex');
});
<div id="inputs">
<input maxlength="5">
</div>
const $inputs = $('#inputs').on('input', 'input', function() {
const $this = $(this);
const maxlen = +$this.attr('maxlength');
if ($this.val().length === maxlen) {
let $next = $this.next();
if (!$next.length) {
$next = $(`<input maxlength="${maxlen}">`).appendTo($inputs);
}
$next.focus();
}
});
// или
document.querySelector('#inputs').addEventListener('input', function(e) {
const input = e.target;
const maxlen = +input.getAttribute('maxlength');
if (input.value.length === maxlen) {
if (!input.nextElementSibling) {
this.insertAdjacentHTML('beforeend', `<input maxlength="${maxlen}">`);
}
input.nextElementSibling.focus();
}
});
div.classList.remove(...[...div.classList].filter(n => n.indexOf('_key-word') !== -1))
false
, подсовывайте какое-то корректное дефолтное значение, в данном случае - пустую строку:(item._Name || '').trim()
item._Name?.trim?.() ?? ''
Владивосток - плюс 7 часов к текущему.
function getTimeInTimezone(zone) {
const
d = new Date(),
utc = d.getTime() + d.getTimezoneOffset() * 60000;
return new Date(utc + zone * 3600000);
}
new Date()
, делаем так: getTimeInTimezone(10)
.