swiper-container-initialized
, можно назначать нужные стили в зависимости от его наличия:.swiper-container:not(.swiper-container-initialized) {
.swiper-button-prev,
.swiper-button-next,
.swiper-pagination {
display: none;
}
}
value: Boolean,
, а в <toggle-button
-:value="value"
@input="$emit('input', $event)"
<toggle-button
добавить v-on="$listeners"
. let isBtn1Clicked = false;
button1.addEventListener('click', () => isBtn1Clicked = true);
button2.addEventListener('click', () => {
if (isBtn1Clicked) {
// ...
}
});
button1.addEventListener('click', e => e.target.classList.add('clicked'));
button2.addEventListener('click', () => {
if (button1.classList.contains('clicked')) {
// ...
}
});
button2.disabled = true;
button1.addEventListener('click', () => button2.disabled = false);
button2.addEventListener('click', () => {
// ...
});
button2.hidden = true;
button1.addEventListener('click', () => button2.hidden = false);
button2.addEventListener('click', () => {
// ...
});
button1.addEventListener('click', () => {
button2.addEventListener('click', () => {
// ...
});
}, { once: true });
const obj = Object.fromEntries(arr.map(n => [ n.name, n.number ]));
// или
const obj = arr.reduce((acc, n) => (acc[n.name] = n.number, acc), {});
// или
const obj = Object.assign({}, ...arr.map(n => ({ [n.name]: n.number })));
function toObj(data, key, val = n => n) {
const getKey = key instanceof Function ? key : n => n[key];
const getVal = val instanceof Function ? val : n => n[val];
const obj = {};
for (const n of data) {
obj[getKey(n)] = getVal(n);
}
return obj;
}
const obj = toObj(arr, 'name', 'number');
// {Kolya: '5', Olga: '10'}
const charCodes = toObj('abc', n => n.charCodeAt());
// {97: 'a', 98: 'b', 99: 'c'}
<input name="xxx" value="69">
<input name="yyy" value="187">
<input name="zzz" value="666">
const inputValues = toObj(document.querySelectorAll('input'), 'name', 'value');
// {xxx: '69', yyy: '187', zzz: '666'}
идентичны
l
и 1
совсем не одно и то же.console.log(this.$slots.header) // не работает
created () {
function App() {
const [ seconds, setSeconds ] = React.useState(60);
const [ timerActive, setTimerActive ] = React.useState(false);
React.useEffect(() => {
if (seconds > 0 && timerActive) {
setTimeout(setSeconds, 100, seconds - 1);
} else {
setTimerActive(false);
}
}, [ seconds, timerActive ]);
return (
<div>
{seconds
? <React.Fragment>
<button onClick={() => setTimerActive(!timerActive)}>
{timerActive ? 'stop' : 'start'}
</button>
<div>{seconds}</div>
</React.Fragment>
: <button onClick={() => setSeconds(60)}>ещё раз</button>
}
</div>
);
}
const prices = {
'Москва': 100,
'Санкт-Петербург': 200,
'Казань': 300,
};
$('form').on('change', function() {
const [ city1, city2 ] = $('select', this).get().map(n => n.value);
const price = city1 === city2
? prices[city1]
: prices[city1] + prices[city2];
$('input', this).val(price);
}).change();
button.addEventListener('click', async () => {
for (const el of cards) {
await el.animate([
{ transform: 'rotateX(0deg)' },
{ transform: 'rotateX(180deg)' },
], {
duration: 1000,
easing: 'linear',
fill: 'forwards',
}).finished;
}
});
Пробовал через emit передать, но получилось перехватить событие только в App.vue, но не в Modal.vue
const container = document.querySelector('.buttons');
const buttonSelector = '.button';
const onButtonClick = button => console.log(button.id);
container.addEventListener('click', e => {
const button = e.target.closest(buttonSelector);
if (button) {
onButtonClick(button);
}
});
container.querySelectorAll(buttonSelector).forEach(function(n) {
n.addEventListener('click', this);
}, e => onButtonClick(e.currentTarget));