Javascript 在结束时未调用iOS滚动事件?

Javascript 在结束时未调用iOS滚动事件?,javascript,jquery,javascript-events,Javascript,Jquery,Javascript Events,当用户拖动页面上可滚动的特定div时,我试图调用一个函数。以下内容不适用于我: document.addEventListener("scroll", scroll, false); $("#content").on("scroll", scroll, false); $(document).on("scroll", scroll, false); function scroll(){ alert("scrolled"); } 我试图捕获滚动条的div是#content。我原以为上面

当用户拖动页面上可滚动的特定div时,我试图调用一个函数。以下内容不适用于我:

document.addEventListener("scroll", scroll, false);
$("#content").on("scroll", scroll, false);
$(document).on("scroll", scroll, false);

function scroll(){
    alert("scrolled");
}
我试图捕获滚动条的div是
#content
。我原以为上面的一个可以工作,但它们不会产生任何错误,也不被称为正确

第一个根本不运行
滚动
。第二个函数在用户滚动时调用函数,而不是在最后。第三个只调用
body
元素上的函数

这里有一个演示

完整代码:

$(document).ready(function () {



    var extra = $("#content").height() - $("#list").height();
    if (extra > 0) {
        $("#list").css("margin-bottom", extra);
    }
    $("#content").scrollTop("50");

    var removeTransition = function () {
        content.style['-webkit-transition-duration'] = 0;
    };
    content = document.getElementById('content');
    pullToRefresh = document.getElementById('pull_to_refresh');
    refreshing = document.getElementById('refreshing');

    function success(callback) {
        // simulate a network request that takes 2 seconds
        window.setTimeout(function () {
            var l = document.getElementById('list');
            for (var i = 0; i < 5; i++) { // insert 5 new items
                var li = document.createElement('li');
                li.innerHTML = 'List Item ' + Math.floor(Math.random() * 100);
                li.style.opacity = 0;
                l.insertBefore(li, l.firstChild);
            }
            window.setTimeout(function () {
                for (var i = 0; i < 5; i++) {
                    l.children[i].style.opacity = 1;
                }
            }, 0);
            callback(); // pull callback when finished
        }, 2000);
    }

    function start() {
        console.log('start');
    }

    function cancel() {
        console.log('cancel');
    }
    $("#content").on('scroll', function (e) {
        var test = $("#list li").eq(1).offset().top - $("#list li").outerHeight();
        if (test > 0) {
            $("#content").scrollTop("50");
        }
    });
    document.getElementById('content').addEventListener('touchend', function (e) {
        if (refresh) {
            content.style['-webkit-transition-duration'] = '.5s';
            $("#content").scrollTop("0");
            pullToRefresh.style.display = 'none';
            refreshing.style.display = '';
            success(function () { // pass down done callback
                pullToRefresh.style.display = '';
                refreshing.style.display = 'none';
                $("#content").scrollTop("50");
                content.addEventListener('transitionEnd', removeTransition);
            });
            refresh = false;
        } else {
            content.style['-webkit-transition-duration'] = '.25s';
            $("#content").scrollTop("50");
            content.addEventListener('transitionEnd', removeTransition);
            cancel();
        }
    });
    document.getElementById('content').addEventListener('touchmove', function (e) {
        var test = $("#list li").eq(1).offset().top - $("#list li").outerHeight();
        if (test === 0) {
            refresh = true;
        } else {
            refresh = false;
        }
    });
    document.getElementById('content').onscroll = function(){
        alert("test");
    };
});  
$(文档).ready(函数(){
var extra=$(“#content”).height()-$(“#list”).height();
如果(额外>0){
$(“#列表”).css(“保证金底部”,额外);
}
$(“#内容”).scrollTop(“50”);
var removeTransition=函数(){
content.style['-webkit转换持续时间']=0;
};
content=document.getElementById('content');
pullToRefresh=document.getElementById('pull_to_refresh');
刷新=document.getElementById(“刷新”);
函数成功(回调){
//模拟需要2秒的网络请求
setTimeout(函数(){
var l=document.getElementById('list');
对于(var i=0;i<5;i++){//插入5个新项
var li=document.createElement('li');
li.innerHTML='List Item'+Math.floor(Math.random()*100);
li.style.opacity=0;
l、 插入前(李,l.第一个孩子);
}
setTimeout(函数(){
对于(变量i=0;i<5;i++){
l、 children[i].style.opacity=1;
}
}, 0);
callback();//完成后拉动回调
}, 2000);
}
函数start(){
console.log('start');
}
函数cancel(){
console.log('cancel');
}
$(“#内容”)。在('scroll',函数(e)上{
var test=$(“#list li”).eq(1).offset().top-$(“#list li”).outerHeight();
如果(测试>0){
$(“#内容”).scrollTop(“50”);
}
});
document.getElementById('content').addEventListener('touchend',函数(e){
如果(刷新){
content.style['-webkit转换持续时间']='.5s';
$(“#内容”).scrollTop(“0”);
pullToRefresh.style.display='none';
刷新.style.display='';
成功(函数(){//传递已完成回调
pullToRefresh.style.display='';
刷新.style.display='none';
$(“#内容”).scrollTop(“50”);
content.addEventListener('transitionEnd',removeTransition);
});
刷新=错误;
}否则{
content.style['-webkit转换持续时间']='.25s';
$(“#内容”).scrollTop(“50”);
content.addEventListener('transitionEnd',removeTransition);
取消();
}
});
document.getElementById('content').addEventListener('touchmove',函数(e){
var test=$(“#list li”).eq(1).offset().top-$(“#list li”).outerHeight();
如果(测试==0){
刷新=真;
}否则{
刷新=错误;
}
});
document.getElementById('content')。onscroll=function(){
警报(“测试”);
};
});  

据我所知,您想知道用户何时停止滚动?如果是这样,我会尝试以下方法

var timeoutId = null;
$("#content").on("scroll", scroll, false);

function scroll(){
    if(timeoutId != null){
        clearTimeout(timeoutId);
    }
    timeoutId = setTimeout("scrollEnd()", 100);
}

function scrollEnd(){
    timeoutId = null;
}
然后,当用户停留在100ms时,将调用scrollEnd函数