JS部分
 createSwiper1() {
var option = {
// slidesPerView: 5,
slidesPerView: 3,
centeredSlides:true,
};
if (this.state.newData.length > 2) {
option = {
loop: true,
loopedSlides: this.state.newData.length,
loopAdditionalSlides: 3,
slidesPerView: 'auto',
// slidesPerView: '3',
centeredSlides:true,
effect:'coverflow',
paginationClickable: true,
preventLinksPropagation: true,
observer: true,//修改swiper自己或子元素时,自动初始化swiper
observeParents: true,//修改swiper的父元素时,自动初始化swiper
coverflow:{
rotate: 0,
stretch: 85,
depth: 52,
modifier: 1,
slideShadows: true
}, nextButton: '.swiper-button-next',
prevButton: '.swiper-button-prev',
onTouchEnd: (swiper) => {
window.slideSwitchMp3();
}
}
}
var mySwiper = new Swiper('#'+ (this.props.place +'NewSwiperId'),option); mySwiper.on('tap',(swiper,e) => {
var that=this;
let item = this.state.newData[swiper.realIndex];
var buttonId=document.getElementById(this.props.place +'buttonId')
var buttonPrev=document.getElementById(this.props.place +'button-prev')
var buttonNext=document.getElementById(this.props.place +'button-next')
if(that.isDOMContains(buttonPrev,e.target,buttonId) ||that.isDOMContains2(buttonNext,e.target,buttonId)){
return false;
}else {
if (item) {
this.setState({newDetailShow: true, selectNewItem: item, eyeNum: 0, newDetailData: []}, () => {
if (item.infotype == 2) {
this.createPdf(item.pdfurl);
}
else {
this.fetchNewDetail();
}
this.props.parentCallback && this.props.parentCallback();
});
window.clickSoundEffect();
}
}
});
},

解决轮播按钮被覆盖
 isDOMContains:function(parentEle,ele,container){

     //判断一个节点是否是其子节点
//parentEle: 要判断节点的父级节点
//ele:要判断的子节点
//container : 二者的父级节点 //如果parentEle h和ele传的值一样,那么两个节点相同
if(parentEle == ele){
return true
}
if(!ele || !ele.nodeType || ele.nodeType != 1){
return false;
}
//如果浏览器支持contains
if(parentEle.contains){
return parentEle.contains(ele)
} //火狐支持
// if(parentEle.compareDocumentPosition){
// return !!(parentEle.compareDocumentPosition(ele)&16);
// } //获取ele的父节点
// var parEle = ele.parentNode;
// while(parEle && parEle != container){
// if(parEle == parentEle){
// return true;
// }
// parEle = parEle.parentNode;
// }
return false;
}, isDOMContains2:function(parentEle,ele,container){
console.log("parentEle",parentEle)
console.log("container",container)
//判断一个节点是否是其子节点
//parentEle: 要判断节点的父级节点
//ele:要判断的子节点
//container : 二者的父级节点 //如果parentEle h和ele传的值一样,那么两个节点相同
if(parentEle == ele){
return true
}
if(!ele || !ele.nodeType || ele.nodeType != 1){
return false;
}
//如果浏览器支持contains
if(parentEle.contains){
return parentEle.contains(ele)
} //火狐支持
// if(parentEle.compareDocumentPosition){
// return !!(parentEle.compareDocumentPosition(ele)&16);
// } //获取ele的父节点
// var parEle = ele.parentNode;
// while(parEle && parEle != container){
// if(parEle == parentEle){
// return true;
// }
// parEle = parEle.parentNode;
// }
return false;
},

render部分
 {
!this.state.newDetailShow &&
<div className="new-list" ref="newListId">
<div className="swiper-container " id={ this.props.place +'NewSwiperId'} style={{transform: this.props.place == 'top' ? 'rotateZ(180deg)': 'rotateZ(0deg)'}}> <div className="swiper-wrapper">
{
this.state.newData && this.state.newData.map((item,index) => {
return (
<div className="swiper-slide" key={index} data-i={index}>
<img src={item['titlepic'].toLowerCase().indexOf("http") !== 0 ? "http://" + item['titlepic'] : item['titlepic']} style={{transform: this.props.place == 'top' ? 'rotateZ(180deg)': 'rotateZ(0deg)'}} />
<div className="swiper-mask"></div>
</div>
)
})
}
{/*onClick={this.newslistclick.bind(item,index)}*/} </div>
<div className="container" id={ this.props.place +'buttonId'} >
<div className="swiper-button-next" id={ this.props.place +'button-next'} ></div>
<div className="swiper-button-prev" id={ this.props.place +'button-prev'}></div>
</div>
</div> </div>
}

react使用swiper,解决添加点击事件首位图片点击失效,解决轮播按钮被覆盖问题的更多相关文章

  1. JS: javascript 点击事件执行两次js问题 ,解决jquery绑定click事件出现点击一次执行两次问题

    javascript 点击事件执行两次js问题 在JQuery中存在unbind()方法,先解绑再添加点击事件,解决方案为: $(".m-layout-setting").unbi ...

  2. echarts 图的点击事件(含:点击重复触发的问题及其解决方法)

    今天用echarts的时候发现一个问题 鼠标指向不同地市触发一个事件展示该地区趋势图  但是但是后台中不管我第几次鼠标指向都会触发两次指向事件 现在贴出解决办法: 问题完美解决.但是为什么会调用两次, ...

  3. Swift 导航栏设置图片点击事件,图片蓝色的解决方案

    如果导航栏想做一个点击事件,正好是一个图片 我们可以直接这样: self.navigationItem.rightBarButtonItem = UIBarButtonItem(image: UIIm ...

  4. pyqt的多Button的点击事件的槽函数的区分发送signal的按钮。

    关键函数:QPushButton的setObjectName()/objectName() 个人注解:按功能或者区域,将按钮的点击事件绑定的不同的槽函数上. from PyQt5.QtWidgets ...

  5. 在CTreeCtrl控件点击事件中获取点击的项

    网上搜了一下,有两种方法: 1.使用GetSelectedItem() HTREEITEM hItem = m_treeCtrl.GetSelectedItem(); CString strText ...

  6. javascript基础1 语法 点击事件 超链接带点击事件

    javascript ----------------------------------------------------------------------------------------- ...

  7. 点击DIV触发其他元素的点击事件(案例:点击type="radio" 的input 标签外层DIV,触发内部单选点击选中事件)

    方法一: 直接用找到对应dom元素调用.click()方法 $('.user_content').click(function(){ $(this).children()[0].click(); // ...

  8. 417 事件、监听、jQuery、轮播手动

    am:通用事件 a链接事件阻止默认行为 return false HTML元素大都包含了自己的默认行为,例如:超链接.提交按钮等.我们可以通过在绑定事件中加上return false来阻止它的默认行为 ...

  9. 点击轮播图片左右button,实现轮播效果

    点击左右button.实现图片轮播效果.js代码例如以下: $(function () { var index = 1; var pPage = 1; var $v_citemss = $(" ...

随机推荐

  1. jmeter遇到的问题:java.net.ConnectException: Connection refused: connect

    1.使用jmeter执行脚本,在察看结果树的的响应数据中看到的错误提示如下: java.net.ConnectException: Connection refused: connect at jav ...

  2. flask 使用hashlib加密

    flask 使用hashlib加密 import hashlib #引入hashlib #使用方法: password = ' sha1 = hashlib.sha1() #使用sha1加密方法,你还 ...

  3. 关于FR4板一些重复的数据

    介电常数:4.2-4.7 信号传输速度:表层 140~170 ps/inch, 内层 180 ps/inch

  4. [CTSC2018]青蕈领主

    [CTSC2018]青蕈领主 题解 首先,连续段要知道结论: 连续段要么不交,要么包含 所以是一棵树!每个位置的father是后面第一个包含它的 树形DP! 设dp[x],x为根的子树,(设管辖的区间 ...

  5. 牛客多校第六场 A Garbage 模拟/签到

    题意: 给你一个字符串,代表一个垃圾都有哪些物质组成,再给你一个字符串,代表a-z代表的物质分别是有害物质,干物质还是湿物质,根据题目的定义,回答是什么垃圾. 题解: 根据题意模拟即可. #inclu ...

  6. 怎样使用github?(转)

    怎样使用github?(转) 转自: 怎样使用 GitHub? - 知乎https://www.zhihu.com/question/20070065 珊姗是个小太阳 ❤努力做最胖//bang的健身博 ...

  7. iframe 的那些事儿

    项目中有不少地方用到iframe,今儿把使用iframe遇到的一些问题一块儿总结一下. 1.javascript监听iframe加载完成事件 iframe加载过程需要一定时间,这个加载过程常常出现白屏 ...

  8. Android基础知识—Context理解及使用

    Context是Android中一个非常重要的概念,用于访问全局信息,几乎所有的基础组件都继承自 Context,理解 Context 对于学习 Android 四大基本组件非常有帮助. 1. Con ...

  9. 一个WordCount执行过程的实例

  10. vagrant生成多台虚拟机

    第一种: # -*- mode: ruby -*- # vi: set ft=ruby : # All Vagrant configuration is done below. The "2 ...