我正在努力让我的头发试图让iscroll 4与jQuery Mobile合作。
如果我禁用JQM ajax默认导航,但一切正常,但我想保留它。
我的问题是我无法解决如何成功调用/绑定iscroll以使其适用于需要它们的页面。我试过pageinit()和pagecreate()无济于事。
这里可以找到一个基本的例子: http://bit.ly/ngXkNR
任何指针都非常赞赏。
一个。
答案 0 :(得分:7)
谢谢贾斯珀, 我稍微改变了你的方法,这样你就可以在任何用类标识的包装器上调用iScroll。 另外,我在pagehide事件上卸载并销毁所有iScroll实例 - 我不需要刷新方法来满足我的需求:
// iScroll variable
var myScroll = [];
$(document).delegate('[data-role="page"]', 'pageshow', function () {
var $page = $(this);
// setup iScroll
$($page.find('.iscroll_wrapper')).each(function(index) {
var scroller_id = $(this).get(0);
myScroll.push(
new iScroll(scroller_id, {
snap : true,
momentum : false,
hScrollbar : false
}));
});
});
$(document).delegate('[data-role="page"]', 'pagehide', function () {
// unset and delete iScroll
for (x in myScroll)
{
myScroll[x].destroy();
myScroll[x] = null;
myScroll.splice(x, 1);
}
});
答案 1 :(得分:6)
按照我四天前为您创建的示例(using iscroll with jquery mobile)...您绑定到的事件仅在初始页面加载时触发,并且您希望绑定到每当触发的jQuery Mobile事件将新页面添加到DOM中。
变化:
var myScroll;
document.addEventListener('DOMContentLoaded', loaded, false);
要:
var myScroll = [];
$(document).delegate('[data-role="page"]', 'pagecreate', function () {
myScroll[this.id] = new iScroll(this.id + '_wrapper', {
snap: true,
momentum: false,
hScrollbar: false
});
});
这需要将每个页面上的wrapper
div重命名为_wrapper。无论如何,这是必要的,因为具有ID的每个元素都需要DOM中的唯一ID。
链接:using iscroll with jquery mobile
<强> - UPDATE - 强>
我创建了一个在多个页面上使用iScroll轮播的示例。请注意我如何在每个页面上包含自定义JavaScript和CSS,因此如果用户刷新页面(在任何页面上),由于缺少代码,它们不会收到任何错误。
以下是工作示例的链接:http://apexeleven.com/stackoverflow/iScroll/default.html