Событие щелчка по внутреннему элементу bxSlider не срабатывает после обновления Chrome до версии 73. Как вызвать событие .on ('click') для элементов в новом Chrome?
Он срабатывает в Chrome, когда движутся слайды.
Все хорошо в FireFox
<div class="slider-pager">
<div class="slider-pager__item"><img src="1.jpg" alt=""></div>
<div class="slider-pager__item"><img src="2.jpg" alt=""></div>
</div>
<script>
carouselProduct = $('.slider-pager').bxSlider({
maxSlides: 3,
minSlides: 3,
slideWidth: 90,
infiniteLoop: false,
moveSlides: 1,
slideMargin: 8,
pager: false,
nextSelector: '.slider__nav--next',
prevSelector: '.slider__nav--prev',
nextText: '→',
prevText: '←'
});
$('.slider-pager__item').on('click', function (event) {
//Don't fire in Chrome 73, works in FireFox
$('.slider-pager__item').removeClass('active');
$(this).addClass('active');
});
</script>
JS Fiddle https://jsfiddle.net/sergey_beloglazov/3ty7w12z/17/
UPDATE:
Я сделал обходной путь для этого слайдера, обрабатывая событие оболочки onClick:
$('.slider-pager').parent().on('click', function (event) {
var $hover_item = $('.slider-pager__item:hover');
//Checking if we have found the element
if ($hover_item.length>0){
selectBxPagerItem($hover_item);
}
});
$('.slider-pager__item').on('click', function (event) {
selectBxPagerItem($(this));
});
selectBxPagerItem () - это функция выбора.
Для ползунка с цветной коробкой на клике я сделал похожую эмуляцию клика:
$('.slider-for').parent().on('click', function (event) {
var $hover_item = $('.slider-for__item:hover a');
if (($hover_item.length>0)&&(!window.slider_for_click_imitation)){
window.slider_for_click_imitation=true;
$hover_item.click();
}
window.slider_for_click_imitation=false;
});
ОБНОВЛЕНИЕ 2019.07.20:
Недавно я узнал, что предыдущее решение не работает сейчас.
Я проверил это и обнаружил, что внутренние элементы не имеют состояния : hover ;
Итак, есть еще один источник с mouseover event
/* A Chrome bx slider bug workaround */
//A slide, that has the mouse pointer over
window.bxslider_mouse_over_slide=null;
$(function() {
$('.slider-pager div').mouseover(
function(event) {
window.bxslider_mouse_over_slide=$(this);
});
});
$('.slider-pager').parent().on('click', function (event) {
//Check if we've got a slide under the mouse
if ((window.bxslider_mouse_over_slide!=null)){
$('.slider-pager__item').removeClass('active');
window.bxslider_mouse_over_slide.addClass('active');
}
});
Обходя путь, я обнаружил, что когда я нажимаю на баннер, срабатывает событие mouseover , и только тогда оно обрабатывает событие щелчка. Так что в этот момент слайд не имеет состояния : hover . Так что я просто сохраняю последний зависший баннер.
Проверьте решение: https://jsfiddle.net/sergey_beloglazov/5kmdacgn/22/