到目前为止,我仍然没有弄清楚为什么$ .mobile.changePage不会在下一页/第二页中触发,它只能在索引页面中运行。我知道使用jquery mobile所有脚本只会加载一次,因为jqm是以ajax方式构建的。但我仍然无法找到解决问题的方法。
如果不在index.page或首次加载,则下面的脚本不会触发。
$(document).bind("pageinit", function(){
$('.sns-down').bind('swipe', function(event) {
$.mobile.changePage('#featured', { transition: "slidedown"});
});
});
我做了一个简单的演示,我将其附在此处以获得更多说明。 Download Link
请帮忙。
答案 0 :(得分:1)
答案 1 :(得分:1)
不要使用$(document).bind,使用新的on
委托,这会在您的文档根目录中放置一个监听器,该监听器监听在jQM添加新页面时冒泡的pageinit / pageshow事件。
$(document).on('pageinit', 'div:jqmData(role="page"), div:jqmData(role="dialog")', function(event){
$(this).find('.sns-down').bind('swipe', function(event) {
$.mobile.changePage('#featured', { transition: "slidedown"});
});
不要使用直线$('.sns-down')
此选择器可能会无意中选择不在当前页面内的元素,您应该始终从当前页面进行搜索。
接下来要检查的是#featured
是否存在,如果您将其包含在第一页中,那么它就会存在。如果您的第二页是多页模板并且链接到它,则jQM仅从多页模板中提取单页。只需尝试使用实际页面来解决此问题。
使用调试器/警报确保通过页面转换正确捕获pageinit以规则输出,但它应该可以正常工作。