swiper.js是一个强大的滑屏组件,经常用于制作轮播图。
环境描述:react + react-id-swiper
问题描述:swiper
在loop
模式下,一些swipe点击事件不能触发
问题分析:loop
模式下,swiper插件
会复制第一个 swipe和最后一个swipe,即存在n+2
个swipe,由于多处的两个swipe是由插件生成的dom,并非虚拟dom,我们绑定的onClick事件并不会绑定到这两个swipe上去。
解决方案:手动绑定点击事件
<Swiper {...params}>
{list.map((item,index)=>{
return (
<div className="car-item" key={index}>
<img className="banner" src={item.banner} alt="" link={item.linkUrl} />
</div>)
})}
</Swiper>
/**
* @desc 手动添加点击事件
*/
initClick = () => {
let banners = Array.from(document.getElementsByClassName('banner'));
if(!Array.isArray(banners)) return;
banners.forEach((item)=>{
item.addEventListener('click',function(){
this.getAttribute('link')&&window.open(this.getAttribute('link'),'_blank');
})
})
}
网友评论