$(window).scroll(function() {
const $banner = $('.banner');
const bannerHeight = $banner.outerHeight(true);
const bannerTop = parseInt($banner.css('top'), 10);
const windowTop = $(this).scrollTop();
$banner.toggleClass('hide', $('.fullwidth').get().some(n => {
const $n = $(n);
const nTop = $n.offset().top - bannerTop;
const minTop = nTop - bannerHeight;
const maxTop = nTop + $n.outerHeight(true);
return windowTop > minTop && windowTop < maxTop;
}));
});
const join = val => Array.isArray(val) ? val.map(join).join('') : val;
const join = arr => ''.concat(...arr.flat(Infinity));
const join = arr => arr.reduce((acc, n) => acc + (n instanceof Array ? join(n) : n), '');
function join(arr) {
const result = [];
for (const stack = [ arr ]; stack.length;) {
const n = stack.pop();
if (n?.constructor === Array) {
stack.push(...[...n].reverse());
} else {
result.push(n);
}
}
return result.join``;
}
<button @click="showFiltered = !showFiltered">
Показать {{ showFiltered ? 'все' : 'отфильтрованные' }} элементы
</button>
<ul>
<li v-for="n in (showFiltered ? filteredItems : items)">{{ n }}</li>
</ul>
data: () => ({
items: [ ... ],
showFiltered: false,
}),
computed: {
filteredItems() {
return this.items.filter(n => 0 < n && n < 10);
},
},
Загорелся желанием попробовать реализовать такую игру на vue.js https://youtu.be/WtUKSGJ_9No
Хотелось бы узнать ваше мнение, насколько это будет возможно?
sortByPrices
и sortByDuration
? Дайте-ка попробую угадать - принимают в качестве параметра массив, и его же сортируют. Если так, то ответ на вопрос "куда копать" очевиден - копайте основы js, какие бывают типы данных, в чём их особенности. Массивы являются объектами, а объекты при присваивании / передаче в функцию / возврате из функции не копируются, копируются ссылки на них. То есть, несколько раз сортируется один и тот же массив - естественно, что при выводе всегда будет отображаться результат последней сортировки. Делайте копии массива, сортируйте копии, передавайте эти копии в экземпляры TicketsList
, типа tickets={sortByPrices([...visibleData])}
. sum(int(n[2:]) for n in arr)
.sum(int(re.sub(r'\D', '', n)) for n in arr)
. $color = preg_match('~^цвет (.+)~ui', $str, $match) ? $match[1] : null;
v-model
игнорирует начальное значение атрибутовvalue
,checked
илиselected
на любых элементах форм.
$chunks = array_chunk($arr, 2);
$newArr = array_combine(array_column($chunks, 0), array_column($chunks, 1));
for ($i = 0; $i < count($arr); $i += 2) {
$newArr[$arr[$i]] = $arr[$i + 1];
}
$('form').on('input', function() {
$('#submit-about').prop('disabled', ![
$('#name-about').val().length !== 0,
$('#phone-about').val().length === 16,
$('#personaldata-about').prop('checked'),
].every(Boolean));
});