Есть много элементов списка с одним и тем же id='report-started'
. При нажатии на который я в js должен получить его data-progress
.
Как разграничить эти элементы списка и узнать на какой я нажал?
Я понимаю, что можно каждому id='report-started'
добавить уникальное значение типа id='report-started-123'
и id='report-started-234'
и т.д., но не понимаю как тогда определять по какому именно элементу был клик?
В примере клик срабатывает только на первом элементе.
Спасибо.
$(document).ready(function () {
$('#report-started').on('click', function() {
var progress = $(this).attr('data-progress');
console.log(progress);
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul>
<li data-progress="[1, 2]" id="report-started">
Открыть
</li>
<li data-progress="[3, 4]" id="report-started">
Открыть
</li>
<li data-progress="[5, 6]" id="report-started">
Открыть
</li>
</ul>
Вместо id
в данном случае нужно использовать class
:
$(document).ready(function() {
$('.report-started').on('click', function() {
var progress = $(this).attr('data-progress');
console.log(progress);
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul>
<li data-progress="[1, 2]" class="report-started">
Открыть
</li>
<li data-progress="[3, 4]" class="report-started">
Открыть
</li>
<li data-progress="[5, 6]" class="report-started">
Открыть
</li>
</ul>
Однако если очень хочется использовать именно одинаковые id
несмотря на то, что это может привести к другим проблемам, можно немного изменить селектор:
$(document).ready(function() {
$('li#report-started').on('click', function() {
var progress = $(this).attr('data-progress');
console.log(progress);
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul>
<li data-progress="[1, 2]" id="report-started">
Открыть
</li>
<li data-progress="[3, 4]" id="report-started">
Открыть
</li>
<li data-progress="[5, 6]" id="report-started">
Открыть
</li>
</ul>
document.addEventListener('click', function(e){
console.log('target', e.target);
console.log('currentTarget', e.currentTarget);
console.log('evt', e);
message.innerHTML = e.target.tagName;
});
Далее, определив таргет нажатия, можно просто через css селектор взять родителя, или чайлда.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Например, есть несколько классов classA, classB и мне необходимо создать класс динамически, как в php
При переносе кода из проекта на aspnet core в бекенд на vue я столкнулся с тем, что хочу записать некоторые фрагменты шаблона более лаконично
Как сделать чтобы высота картинки в блоке была auto? Те ширина картинки всегда 100%, а высота блока подстраивалась по пропорциональной высоте...