Допустим есть такой html код
<div class="block">
<div data-test="one">
one
</div>
<div data-test="two">
two
</div>
</div>
Как можно вызвать разные событие по одному клику в зависимости от того на какой атрибут нажали
Например
$('.block').click (
//если нажали на data-test="two" то что то делаем
// если нажали на data-test="one" то делаем другое
)
$('.block > div').click(function() {
if ($(this).attr('data-test') === 'two') {
console.log('если нажали на data-test="two" то что то делаем')
} else if ($(this).attr('data-test') === 'one') {
console.log('если нажали на data-test="one" то делаем другое')
}
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="block">
<div data-test="one">
one
</div>
<div data-test="two">
two
</div>
</div>
У объекта Event есть свойство target, которое содержит ссылку на целевой (т.е. самый вложенный) элемент DOM структуры, который принял событие. Вы можете прочитать значения атрибутов этого элемента. (для работы с атрибутом data- в jQuery можно использовать метод data())
$(function () {
$('.block').click(function(evt) {
alert($(evt.target).data('test'))
})
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="block">
<div data-test="one">
one
</div>
<div data-test="two">
two
</div>
</div>
Можно использовать прием делегирование событий. Он заключается в том, что если у нас есть много элементов, события на которых нужно обрабатывать похожим образом, то вместо того, чтобы назначать обработчик каждому – мы ставим один обработчик на их общего предка. Из него можно получить целевой элемент event.target
, понять на каком именно потомке произошло событие и обработать его.
document
.querySelector('.container')
.addEventListener('click',
event => console.log(event.target.dataset.test))
<div class="container">
<div data-test="one">
one
</div>
<div data-test="two">
two
</div>
</div>
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Захватываю левую кнопку, присваиваю ей класс chosen, одновременно убирая его в правой кнопкеЗахватываю правую кнопку, присваиваю тот же класс,...
var num_first = documentgetElementById("one") // допустим что в "one" ввели 5
Столкнулся с проблемойЯ не знаю как определенную надпись сделать по центру сайта
Есть ссылка вида siteru/#brand=10 При переходе на нее должен срабатывать клик по блоку с data-id=10