const $menuItems = $('#menu a');
$('#submenu > ul').width(i => $menuItems.eq(i).width());
methods: {
someMethod() {
...
this.$emit('i-want-to-call-method-from-component-1');
<component-1 ref="component1" />
<component-2 @i-want-to-call-method-from-component-1="$refs.component1.someMethod()" />
const min = 7;
const max = min + 21;
function update(value) {
value = Math.max(min, Math.min(max, value | 0));
$('#spinner2').val(value);
$('#slider2').slider('value', value);
const date = new Date();
date.setDate(date.getDate() + value);
$('#amount').val(date.toLocaleString('en-US', {
year: 'numeric',
month: 'long',
day: 'numeric',
}));
}
$('#slider2').slider({
range: 'min',
min,
max,
step: 1,
slide: (e, ui) => update(ui.value),
});
$('#spinner2').spinner({
min,
max,
spin: (e, ui) => update(ui.value),
}).on('input', e => update(e.target.value)).trigger('input');
Мои текущие знания и умения:
const sort = {
number: (a, b) => a - b,
string: (a, b) => a.localeCompare(b),
};
function sortTable(table, colIndex) {
if (typeof table === 'string') {
table = document.querySelector(table);
}
const value = row => row.cells[colIndex].innerText;
const compare = sort[table.tHead.rows[0].cells[colIndex].dataset.type];
const tbody = table.tBodies[0];
[...tbody.rows]
.sort((a, b) => compare(value(a), value(b)))
.forEach(n => tbody.append(n));
}
sortTable('#grid', 0);
sortTable(document.querySelector('table'), 1);
А можно как-то присваивать свой класс?
computed: {
activeLink() {
return this.links.find(n => n.url === this.$route.path);
},
},
:class="{ active: activeLink === link }"
words = [ 'and', 'of' ]
sentences.gsub!(/\b(#{words.join('|')})\b/i) {|m| m.downcase}
created() {
const interval = setInterval(this.method, 5 * 60 * 1000);
this.$on('hook:beforeDestroy', () => clearInterval(interval));
},
<div class="phone">8 (123) 111-22-33</div>
<div class="phone">8 (456) 444-55-66</div>
<div class="phone">8 (789) 777-88-99</div>
document.querySelectorAll('.phone').forEach(n => {
const phone = n.innerHTML;
n.innerHTML = phone.slice(0, -4) + '... - <span>показать</span>';
n.querySelector('span').addEventListener('click', () => n.innerHTML = phone);
});
function filter(val) {
if (!(val instanceof Object)) {
return val;
}
const filtered = Object
.entries(val)
.map(n => [ n[0], filter(n[1]) ])
.filter(n => n[1]);
return filtered.length
? val instanceof Array
? filtered.map(n => n[1])
: Object.fromEntries(filtered)
: null;
}
const validator = (value, maxSize) =>
!(/[^а-яА-Яa-zA-Z0-9\s]/.test(value) || value.length > maxSize);
if (validator(value, maxSize)) {
setTitle(value);
}
const validator = (defaultValue, value, maxSize) =>
(/[^а-яА-Яa-zA-Z0-9\s]/.test(value) || value.length > maxSize)
? defaultValue
: value;
setTitle(prevValue => validator(prevValue, value, maxSize));
methods: {
createAlphaIndex(num) {
const base = 26;
let str = '';
do {
const mod = num % base;
num = num / base | 0;
str = (mod ? String.fromCharCode('A'.charCodeAt(0) + mod - 1) : (--num, 'Z')) + str;
} while(num);
return str;
},
},
<div v-for="i in 1000">{{ createAlphaIndex(i) }}</div>