- .popup.visible {
+ .item.visible .popup {
const container = document.querySelector('.container');
const itemSelector = '.item';
const activeClass = 'visible';
const toggleItem = (item, items) =>
items.forEach(n => n.classList[n === item ? 'toggle' : 'remove'](activeClass));
// делегирование, назначаем обработчик клика один раз для всех item'ов
container.addEventListener('click', function({ target: t }) {
if (t.matches(itemSelector)) {
toggleItem(t, this.querySelectorAll(itemSelector));
}
});
// или, каждому item'у назначаем обработчик клика индивидуально
const items = container.querySelectorAll(itemSelector);
items.forEach(n => n.addEventListener('click', onClick));
function onClick({ target: t }) {
if (this === t) {
toggleItem(t, items);
}
}
var p = +$('input').val();
if (p === 1) {
// do something
} else if (p === 2) {
// do something else
}
switch(p) {
case 1:
// do something
break;
case 2:
// do something else
break;
}
let buttons = document.querySelectorAll('.btn');
buttons.forEach((elem)=>{
elem.addEventListener('click',()=>{
elem.parentNode.querySelector('.picture').classList.toggle('active')
})
})
img
класс лучше переключать у article
- максимально дальних не общих предков картинок. Если вдруг захотите при кликах на кнопки стилизовать ещё что-то помимо картинок, или измените взаимное расположение элементов, то не придётся переписывать js-код. Стили, конечно, придётся немного поправить, вместо .active
будет .active img
.const container = document.querySelector('.container');
const itemSelector = 'article';
const buttonSelector = `${itemSelector} .btn`;
const activeClass = 'active';
container.addEventListener('click', e => {
const button = e.target.closest(buttonSelector);
if (button) {
button.closest(itemSelector).classList.toggle(activeClass);
}
});
container.querySelectorAll(buttonSelector).forEach(function(n) {
n.addEventListener('click', this);
}, e => e.currentTarget.closest(itemSelector).classList.toggle(activeClass));
$("form").on("submit", function(event){
event.preventDefault();
var formData = $("form").serialize();
$.ajax({
dataType: "html",
url: "myUrl.php",
cache: false,
type: "POST",
data: formData,
success: function(msg){
console.log(msg);
},
error:function(jqXHR, textStatus){
alert(textStatus);
}
});
});