preg_match('\/\/.+\?', $embed, $matches);
echo $matches;
$matches[0]
<div class="wrapper">
<button data-view="horizontal">Горизонтально</button>
<button data-view="vertical">Вертикально</button>
<div class="card-wrapper" data-view="horizontal">
<div class="card"></div>
<div class="card"></div>
<div class="card"></div>
<div class="card"></div>
</div>
</div>
.card-wrapper {
display: flex;
}
.card-wrapper[data-view="horizontal"] {
flex-direction: row;
}
.card-wrapper[data-view="vertical"] {
flex-direction: column;
}
document.querySelector('.wrapper').addEventListener('click', function(e) {
const view = e.target.dataset.view;
if (view && e.target.tagName === 'BUTTON') {
this.querySelector('.card-wrapper').dataset.view = view;
}
});
<div class="wrapper">
<button data-view="horizontal">Горизонтально</button>
<button data-view="vertical">Вертикально</button>
<div class="card-wrapper active" data-view="horizontal">
<div class="card"></div>
<div class="card"></div>
<div class="card"></div>
<div class="card"></div>
</div>
<div class="card-wrapper" data-view="vertical">
<div class="card"></div>
<div class="card"></div>
<div class="card"></div>
<div class="card"></div>
</div>
</div>
.card-wrapper {
display: none;
}
.card-wrapper.active {
display: flex;
}
.card-wrapper[data-view="horizontal"] {
flex-direction: row;
}
.card-wrapper[data-view="vertical"] {
flex-direction: column;
}
document.querySelector('.wrapper').addEventListener('click', function(e) {
const view = e.target.dataset.view;
if (view && e.target.tagName === 'BUTTON') {
document.querySelectorAll('.card-wrapper').forEach(n => {
n.classList.toggle('active', n.dataset.view === view);
});
}
});
function updateFraction(slider) {
const { params, activeIndex } = slider;
slider.$el
.find(`.${params.pagination.currentClass}`)
.text(`${activeIndex + 1} - ${activeIndex + params.slidesPerView}`);
slider.$el
.find(`.${params.pagination.totalClass}`)
.text(slider.slides.length);
}
on: {
init() {
setTimeout(updateFraction, 0, this);
},
slideChange() {
updateFraction(this);
},
resize() {
updateFraction(this);
},
},
data('.nights')
data('.guests')
state = {
active: 0,
}
nextSlideHandler = ({ target: { dataset: { step } } }) => {
const len = this.props.images.length;
this.setState(({ active }) => ({
active: (active + len + +step) % len,
}));
}
<button data-step="-1" onClick={this.nextSlideHandler} className="prev">prev</button>
<button data-step="+1" onClick={this.nextSlideHandler} className="next">next</button>
<img src={this.props.images[this.state.active]} />
const [ active, setActive ] = useState(null);
const item = test.title[active];
const onClick = e => setActive(e.target.dataset.id);
{Object.keys(test.title).map(n =>
<button key={n} data-id={n} onClick={onClick}>{n}</button>
)}
{item && <div>{item.title} ---- {item.category}</div>}
$('div > span').click(e => e.stopPropagation());
$('div').click(function(e) {
if ($(e.target).is('span')) {
return;
}
...
});
onClick = ({ target: { dataset: { shift } } }) => {
this.setState(() => ({ shift }), this.filter);
}
response
следует передавать response.data
mutations: {
setTodos: (state, todos) => state.todos = todos,
},
actions: {
async getTodos({ commit }) {
const results = [];
for (let i = 1; i <= 10; i++) {
try {
const { data } = await axios.get(`https://jsonplaceholder.typicode.com/todos/${i}`);
results.push(data);
} catch (e) {
console.log(e);
}
}
commit('setTodos', results);
},
},
<ul>
<li v-for="n in $store.state.todos" :key="n.id">
<div>#{{ n.id }}</div>
<div>{{ n.title }}</div>
</li>
</ul>
foreach ($arr as $itemName => $item) {
foreach ($item as $propName => $prop) {
foreach ($prop as $val) {
echo "$itemName : $val ; ($propName)<br>";
}
}
}
$("#idModalEditUser").modal('show').find('.modal-body').text($(this).text());