为什么iscroll5导致点击事件被多次触发?

时间:2015-01-19 01:45:58

标签: iscroll

我正在使用以下

jquery 1.11.1
jquery.mobile 1.4.3
cordova 2.9.0
iscroll 5

这是我的HTML:

<div data-role="page" id="listpageid">

    <div data-role="header" data-position="fixed">
       some radio buttons
    </div>

    <div id="wrapper">
       <div data-role="content" id="scroller">
       </div>
    </div>

</div>

我有一个从服务器获取大量数据的ajax调用。我循环通过结果并将它们添加到id =“scroller”

的div中
var scroller = $('<div />', {id : 'scroller'}), i = 0;

$.each(resultsArr, function(key, value) {
    scroller.append(
        $('<a>', {
            id   : 'a' + (i++),
            html : value.field1 
            on   : {
                click : function() {
                    alert("you clicked on " + this.id);
                }
            }
        }),
        $('<br />'),
        $('<br />')
    );
});

$('#scroller').replaceWith(scroller);

只要ajax调用填充resultsArr

,就会运行此代码

运行正常。它显示一个列表,每个元素都是可点击的。

然而,当我添加

    myScroll = new IScroll('#wrapper', {click:true});

$('#scroller').replaceWith(scroller);

我的结果不好:

页面第一次显示并执行此操作时,它给出了我想要的内容,一个可滚动的可点击链接列表。

如果我离开页面并导航回来,点击每个链接会产生2个警报而不是1个。

如果我离开页面并第3次导航,点击链接会发出3个警报而不是1个。

1 个答案:

答案 0 :(得分:0)

我也有同样的问题。 尝试将click设置为false而不是true。

myScroll = new IScroll(&#39; #wrapper&#39;,{click:false});

它对我有用。不管它只需点击一下。

如果上述错误,请尝试这个。

document.addEventListener(&#39; touchmove&#39;,函数(E){e.preventDefault();},假);