如何链接到jQuery Mobile中页面的特定部分?
我在jQM中动态创建一些按钮,如下所示:
return '' + match + '';
这适用于创建按钮 – 它们与按钮上的文本具有相同的id
,并且它们可以很好地链接到词汇表页面。
我需要做的是链接到词汇表页面中的特定位置 。
现在通常你会这样做
但是在jQM中,我必须这样做
这似乎不起作用。 我使用href
创建一个href
,它不起作用。
有没有办法做到这一点?
简单的解决方案是向Anchor添加自定义属性,例如data-subpage="#sectionOne"
,并将该值存储在变量中,以便稍后在更改为glossary
页面时检索值。
Section two
在#glossary
页面中,将id
属性添加到链接中匹配data-subpage
subpage的sectioin div但没有hash #
。
Section one
使用pagecreate
将pagecreate
上的click事件与class subPage
pagecreate
。 单击后,将data-subpage
值存储在全局变量中 。
var subPage; $(document).on("pagecreate", "#pageID", function () { $(".subpage").on("click", function () { subPage = $(this).data("subpage"); }); });
一旦你存储了子页面的值,你需要监听pagecontainershow以滚动到存储在subPage变量中的id
的div。
首先需要使用getActivePage
定义活动页面是否是glossary
。 另外,检查subPage
变量既不是null
也不是undefined
。 否则,页面将正常打开。
如果活动页面是glossary
并且定义了子页面,则检索.offset().top
的div并使用动画或无动画滚动它。
此外,请注意您需要setTimeout
来运行滚动function,以确保页面已完全加载并完成转换 。
$(document).on("pagecontainershow", function () { var activePage = $.mobile.pageContainer.pagecontainer("getActivePage")[0].id; if ( !! subPage && activePage == "glossary") { var scrollTo = $(subPage).offset().top; setTimeout(function () { /* $.mobile.silentScroll(scrollTo); without animation */ $("body").animate({ scrollTop: scrollTo }, 500, function () { /* 500ms animation speed - it's up to you */ subPage = null; /* reset variable */ }); }, 300); /* scroll after 300ms - it's up to you */ } });
演示 (1)
(1)在iPhone 5上测试 – Safari Mobile