2017-07-31 115 views
7

我用这PullToRefresh插件:pulltorefresh.js - 禁用暂时

https://github.com/BoxFactura/pulltorefresh.js#api

它运作良好,但我有一个弹出我的DIV内嵌滚动页面上。 问题是,当我想向上滚动(在div中)PullToRefresh被触发。当弹出窗口打开时,是否可以“删除”或临时禁用PullToRefresh?

PullToRefresh.init({ 
    mainElement: 'body', 
    onRefresh: function(){ 
     refreshAll(); 
    } 
}); 

编辑: delete PullToRefresh; //不起作用

EDIT2: https://github.com/BoxFactura/pulltorefresh.js/blob/master/dist/pulltorefresh.js

回答

6

PullToRefresh.init()将与destroy()函数返回一个对象回调:https://github.com/BoxFactura/pulltorefresh.js/blob/master/dist/pulltorefresh.js#L326

var refresher = PullToRefresh.init({ 
    mainElement: 'body', 
    onRefresh: function(){ 
     refreshAll(); 
    } 
}); 

// destroy the PullToRefresh EventListeners when you open your popup 
refresher.destroy() 

还有一个开放的Github问题ab出来改进初始化后破坏这个库的方法:https://github.com/BoxFactura/pulltorefresh.js/issues/22

0

IMO有两个合理这样做的方法。

您可以定义triggerElement并把你覆盖超出这个triggerElement的:相对弱

PullToRefresh.init({ 
    mainElement: 'body', 
    triggerElement: '#mainContent', 
    onRefresh: refreshAll 
}); 

有点像这个

<body> 
    <div id="containerForOverlays"></div> 
    <div id="mainContent"></div> 
</body> 

这样的#containerForOverlays里面一切都不会触发刷新。


或者如果您的版本已经支持它,您可以使用新挂钩shouldPullToRefresh()

其中PullToRefresh取决于复选框的例子进行检查

<label><input id="refresh" type="checkbox"> Pull to Refresh?</label> 

使用它像

PullToRefresh.init({ 
    mainElement: 'body', 
    shouldPullToRefresh: function(){ 
     return document.getElementById('pullToRefresh').checked 
    }, 
    onRefresh: refreshAll 
}); 

当然我不建议您在生产代码中使用复选框。我只是想展示如何动态地“打开PullToRefresh开启和关闭”。在这个例子中,取决于要检查的复选框。

您需要为您的应用实施正确的shouldPullToRefresh()以确定是否PullToRefresh应该激活或不激活。