Closed zllu closed 9 years ago
请提供更多的信息,就给这么一句,没有任何上下文根本没法进行任何判断啊。
我这边应用场景是点击silder的图片/dom打开微信里面的全屏图片查看控件
1.wiki里面提到了上面绑定点击事件的方式,试了下,无效
2.我做了改写,新增了onclick,65行
// Callback function when the finger move out of the screen
this.onslideend = opts.onslideend;
//以下是新增
this.onclick = opts.onclick;
///553行
if (el.className === 'islider-dom') {
///在getLink方法内新增触发onclick if (_this._opts.onclick) { _this._opts.onclick(_this.slideIndex); } return false ; } 使用的时候 var islider = new iSlider({ dom: document.getElementById('iSlider-wrapper'), type: "dom", data: uiData, duration: 2000, isVertical: false, isLooping: true, isDebug: true, isAutoplay: true, onclick: function (i) { alert(i) } });
这边的alert总是被触发两次,第一次点击silder item,第二次点击body的任何部分都会出发,这个问题只会在手机端重现(我用的微信内置webview调试),用chrome是模拟不出来的,能不能帮忙分析下这个问题
事件绑定应该使用事件代理的方式,可以使用jQuery或者zepto的on()方法,如果没有使用这类库,iSlider也提供了bind方法来进行事件代理。
islider.bind('tap', '.wrap', function(){
alert('aaa')
})
bind方法的第二个参数是容器内部,也就是你的content中的某个元素的选择器,如果你使用容器本身则不管用。
多谢,现在问题解决了。用我上面的方法, onclick: function (i) { //alert(i) 弹出微信imagePreview } 当弹出微信窗口后问题解决,但是如果还是放alert的话,在安卓下面是没有问题,ios版微信下面还是有2次alert,没太理解是什么原因导致这个问题的,不过还是谢谢你的解答
$("#iSlider-wrapper").on("click", function () { Api.imagePreview(imgUrl[0], imgUrl); }); 点击事件无效.....