интересуют только кастомные маркеры...
...и блоки с описанием этих маркеров
.label-text переключайте класс у максимально дальних не общих предков input'ов, т.е., у .thumb. Соответственно, стилизовать надо будет не .label-text.класс, а .класс .label-text. Зачем делать именно так? Потому что не придётся переписывать js-код, если вдруг вам завтра захочется кроме .label-text стилизовать ещё что-то, или решите изменить взаимное расположение элементов.const containerSelector = '.thumb';
const inputSelector = 'input[id^="input-"]';
const activeClass = 'active';$(containerSelector).on('input', inputSelector, function(e) {
$(e.delegateTarget).toggleClass(activeClass, !!this.value);
});const onInput = ({ target: t, currentTarget: ct }) =>
t.matches(inputSelector) && ct.classList.toggle(activeClass, !!t.value);
document.querySelectorAll(containerSelector).forEach(n => {
n.addEventListener('input', onInput);
});
for (let j = 1; j <= this.players; j++) {
this.card.dataset.playerId = j; // а тут устанавливаем playerId. Но он у меня постоянно одинаковый
}this.card.dataset.playerId = i <= this.players ? i : ((Math.random() * this.players | 0) + 1);
<div id="app" @click="onClick">
...new Vue({
el: '#app',
methods: {
onClick(e) {
if (e.target.tagName === 'A') {
e.preventDefault();
window.open(e.target.getAttribute('href'));
}
},
...
},
...
});
const className = 'здесь должен быть класс ваших input\'ов';const inputs = document.querySelectorAll(`.${className}`);
// или
const inputs = document.getElementsByClassName(className);const values = Array.from(inputs, n => n.value);
// или
const values = Array.prototype.map.call(inputs, n => n.value);
// или
const values = [];
for (const n of inputs) {
values.push(n.value);
}
// или
const values = [];
for (let i = 0; i < inputs.length; i++) {
values[i] = inputs[i].value;
}
// или
const values = (function get(i, n = inputs.item(i)) {
return n ? [ n.value, ...get(i + 1) ] : [];
})(0);
$('.cart-window ul').each на $('.cart-window ul .item').each, а $(this).find('.item span').text() замените на $(this).find('span').text().
Этот код вместо результата выводит undefined.
const elements = document.querySelectorAll('.news-full-text img');for (const n of elements) {
const el = document.createElement('div');
el.className = 'image';
el.appendChild(document.createElement('div'));
el.lastChild.className = 'image-social';
el.lastChild.textContent = 'социальные кнопки';
n.insertAdjacentElement('afterend', el);
el.insertAdjacentElement('afterbegin', n);
}elements.forEach(n => n.outerHTML = `
<div class="image">
${n.outerHTML}
<div class="image-social">социальные кнопки</div>
</div>
`);
const containerSelector = '.spoiler-container';
const headerSelector = '.spoiler-header';
const contentSelector = '.spoiler-content';
const activeClass = 'active';
const toggleEffect = 'slideToggle'; // или fadeToggle, или toggle
const hideEffect = 'slideUp'; // или fadeOut, или hide
function toggle($containers, $container) {
$containers
.not($container)
.removeClass(activeClass)
.find(contentSelector)
[hideEffect]();
$container
.toggleClass(activeClass)
.find(contentSelector)
[toggleEffect]();
}const $containers = $(containerSelector).on('click', headerSelector, e => {
toggle($containers, $(e.delegateTarget));
});$(document).on('click', `${containerSelector} ${headerSelector}`, e => {
toggle($(containerSelector), $(e.target).closest(containerSelector));
});
const arr = new Proxy([], {
get(target, key) {
const value = target[key];
return value instanceof Function
? (...args) => {
console.log(`метод "${key}" вызван со следующими аргументами:`, args);
return value.apply(target, args);
}
: value;
},
set(target, key, value) {
console.log(`свойству "${key}" назначено следующее значение:`, value);
target[key] = value;
return true;
},
});
<button>add</button>document.querySelector('button').addEventListener('click', function() {
document.body.appendChild(document.createElement('div'));
});div {
height: 50px;
margin: 5px;
background: red;
animation: show-div 3s;
}
@keyframes show-div {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
if (cell.textContent === num) {if (cell.textContent == num) {// строку в число
if (+cell.textContent === num) {
// число в строку
if (cell.textContent === `${num}`) {
document.querySelector('.animate-all').addEventListener('click', e => {
e.target.hidden = true;
forEachWithDelay(
document.querySelectorAll('[data-color]'),
500,
el => el.parentNode.style.backgroundColor = el.dataset.color
);
});function forEachWithDelay(arr, delay, callback) {
Array.prototype.forEach.call(arr, (n, i) => {
setTimeout(callback, (i + 1) * delay, n);
});
}function forEachWithDelay(arr, delay, callback) {
(function next(i) {
if (i < arr.length) {
setTimeout(() => {
callback(arr[i]);
next(-~i);
}, delay);
}
})(0);
}function forEachWithDelay(arr, delay, callback) {
let i = -1;
const intervalId = setInterval(() => {
if (++i < arr.length) {
callback(arr[i]);
} else {
clearInterval(intervalId);
}
}, delay);
}
const setBgColor = (el, color) =>
el.style.backgroundColor = color;
// или
el.style.setProperty('background-color', color);
// или
el.style.cssText += `background-color: ${color}`;
// или
el.setAttribute('style', `background-color: ${color}`);document.addEventListener('click', ({ target: t }) => {
const { color } = t.dataset;
if (color) {
for (; t.tagName !== 'LI'; t = t.parentNode) ;
setBgColor(t, color);
}
});
// или
document.querySelectorAll('[data-color]').forEach(function(n) {
n.addEventListener('click', this);
}, function() {
setBgColor(this.closest('li'), this.getAttribute('data-color'));
});