<select v-model="user.name">
<option value="">Выбрать</option>
<option v-for="o in getOptions(index)" :value="o.value" v-text="o.label"></option>
</select>
getOptions(index) {
return this.options.filter(o => this.users.every((u, i) => u.name !== o.value || i === index));
},
<span class="prev" data-step="-1">Prev</span>
<span class="next" data-step="+1">Next</span>
eq
позволяет указывать отрицательные индексы, которые используются для отсчёта позиции элемента начиная с конца; в случае чистого js надо будет добавить к сумме количество элементов, чтобы потенциальное отрицательное значение стало положительным, и при этом не изменился остаток от деления.const itemSelector = 'li';
const buttonSelector = '[data-step]';
const activeClass = 'active';
$(buttonSelector).click(function() {
const { step } = this.dataset;
const $items = $(itemSelector);
const $active = $items.filter(`.${activeClass}`);
$active.removeClass(activeClass);
$items.eq(($active.index() + +step) % $items.length).addClass(activeClass);
});
// или
const items = document.querySelectorAll(itemSelector);
let index = 0;
document.querySelectorAll(buttonSelector).forEach(n => {
n.addEventListener('click', onClick);
});
function onClick({ currentTarget: { dataset: { step } } }) {
items[index].classList.remove(activeClass);
index = (index + items.length + +step) % items.length;
items[index].classList.add(activeClass);
}
.xxx {
background: silver;
display: inline-flex;
justify-content: center;
align-items: center;
font-size: 24px;
padding: 0.3em 0.6em;
position: relative;
}
.xxx::before {
content: "";
width: 1em;
height: 1em;
left: -0.2em;
top: -0.2em;
background: orange;
position: absolute;
z-index: -1;
}
watch: {
'$route.params.id': {
immediate: true,
handler() {
/*
* здесь идёт выполнение каких-то действий,
* направленных на обновление компонента - запрос данных, например...
* тут уж вам виднее, что это должно быть
*/
},
},
},
запрос на сервер отправляется два раза, хотя есть переменная, которая это блокирует
есть переменная end, статус которой проверяется постоянно
this.end = false
в finally (однако, само по себе это не гарантирует, что вы не сможете отправлять следующий запрос до окончания предыдущего). $('.breadcrumb').children().last().text((i, text) => text);
document.querySelector('.breadcrumb').lastElementChild.innerText += '';
$('ul').on('click', 'a', function() {
$(this).after($('.drop'));
// или
$('.drop').insertAfter(this);
});
document.querySelector('ul').addEventListener('click', e => {
if (e.target.tagName === 'A') {
e.target.after(document.querySelector('.drop'));
}
});
const dropEl = document.querySelector('.drop');
const onClick = e => e.target.insertAdjacentElement('afterend', dropEl);
document.querySelectorAll('ul a').forEach(n => n.addEventListener('click', onClick));
<span class="b-span" :class="{ 'b-span_active': active }">hello, world!!</span>
<button @click="onClick">click me</button>
data: () => ({
active: false,
time: 300,
}),
methods: {
onClick() {
setTimeout(() => this.active = true, this.time);
},
},
fade: true
из настроек слайдера, из обработчиков клика - второй параметр из вызова slickGoTo
(это который тоже true
). Кстати, а зачем отдельный обработчик каждой кнопке? - можно повесить один общий:const $slider = $('#slider').slick({
slidesToShow: 1,
slidesToScroll: 1,
adaptiveHeight: true,
dots: false,
prevArrow: false,
nextArrow: false,
speed: 900,
});
const $buttons = $('button').click(function() {
$slider.slick('slickGoTo', $buttons.index(this));
});
var pos = this.getAttribute('data-goto'); myMap.panTo(pos, {
data-goto="[59.938531, 30.313497]"
this.getAttribute('data-goto')
---> JSON.parse(this.dataset.goto)
item.price
this.cartItems.reduce((sum, n) => sum + n.price, 0)
Вью держит значение индекса, почему он не может выполнить такую простую операцию?
:delay="i * 0.5"
? - попробуйте, вдруг подойдёт. проблема в том, что видимо когда по первому запросу поле name заполняется, соответственно поле name_changed становится равно true и кнопка сохранения получается изначально доступна
watch:{ name(val, old){ this.name_changed = true; } }
this.$watch('name', () => this.name_changed = true);
Смотрел в документации angular material, но не нашёл такой функции. Это странно, потому что такая функция скорее всего есть в любой подобной таблице.
<span (click)="item.showTags = !item.showTags">Теги:</span>
<div *ngIf="item.showTags">
const $form = $('.order__form-contacts').on('change', '[name="legal-status"]', e => {
$form.find('.order__form-file')[e.target.value === '2' ? 'slideDown' : 'slideUp']();
});
mixin list(...items)
ul.breadcrumbs
each item in items
li.breadcrumbs__item
a(href=item)= item
+list('https://www.google.ru/', 'https://toster.ru', 'https://toster.ru/q/590329')
mixin list(...items)
ul.breadcrumbs
each item in items
li.breadcrumbs__item
a(href='https://toster.ru/q/' + item)= item
+list(590329, 588072, 584712)
mixin list(...items)
ul.breadcrumbs
each item in items
li.breadcrumbs__item
a(href=item.link)= item.text
+list({ link: 'https://www.google.ru/', text: 'google' }, { link: 'https://toster.ru', text: 'toster' }, { link: 'https://toster.ru/q/590329', text: 'ваш вопрос' })