Javascript Swipeleft或Swiperight不更改页面
我在尝试在Appery.io应用程序上进行页面更改时遇到了这个问题。滑动手势正在工作,但页面没有更改,并使用Javascript Swipeleft或Swiperight不更改页面,javascript,jquery,jquery-mobile,swipe,Javascript,Jquery,Jquery Mobile,Swipe,我在尝试在Appery.io应用程序上进行页面更改时遇到了这个问题。滑动手势正在工作,但页面没有更改,并使用$(此)。下一步('[data role=“page”]始终给我一个0的长度 以下是该页面的组成: 下面是控制台使用$(this)时的外观。下一步('[data role=“page”]: 这是我目前正在测试的代码: $('.ui-mobile').on("swipeleft",'[data-role="page"]', function () { console.log('s
$(此)。下一步('[data role=“page”]
始终给我一个0的长度
以下是该页面的组成:
下面是控制台使用$(this)时的外观。下一步('[data role=“page”]
:
这是我目前正在测试的代码:
$('.ui-mobile').on("swipeleft",'[data-role="page"]', function () {
console.log('swipe next page');
var next = $(this).next('[data-role="page"]');
console.log(next);
if (next.length > 0) {
$.mobile.changePage(next, "slide", false, true);
}
});
总而言之,刷卡是有效的,就像控制台记录的那样。当我看“下一个刷卡”时,显示的是“家”,而“上一个兄弟”也是一样,我不确定这是不是正确的属性
我环顾四周,看到了一些类似的帖子,每个帖子都有记号,但不管我看哪个帖子,测试哪个帖子,结果都是一样的,长度总是0
你知道我做错了什么吗
提前谢谢
添加将刷卡事件绑定到文档,然后检查活动页面是否在
.prev()
或.after()之前有页面
$(document).on('swipeleft swiperight', function (event) {
if (event.type == 'swipeleft') {
var activePage = $.mobile.pageContainer.pagecontainer("getActivePage"),
nextPage = activePage.next('[data-role=page]');
if (nextPage) {
$.mobile.pageContainer.pagecontainer("change", nextPage, {
transition: "flip"
});
}
}
if (event.type == 'swiperight') {
var activePage = $.mobile.pageContainer.pagecontainer("getActivePage"),
prevPage = activePage.prev('[data-role=page]');
if (prevPage) {
$.mobile.pageContainer.pagecontainer("change", prevPage, {
transition: "flip",
reverse: true
});
}
}
});
在奥马尔的帮助下,我设法解决了这个问题
因为changePage
和activePage
是
从jQuery Mobile 1.4.0起已弃用,将在1.5.0中删除
我需要一个能够持续的版本,因此我已设法使用以下代码修复它:
$(document).on('swipeleft swiperight', function (event) {
//Check current page id
var activePage = $.mobile.pageContainer.pagecontainer("getActivePage");
//Get div (page) id
activePage = activePage.attr('id');
//Get number of page ie page1, page2, page3 page4 etc
var activePageNo = activePage.slice(4);
//Get current full URL
var activeURL = $(location).attr('href');
//Remove div (page) ref from url
activeURL = activeURL.substr(0,activeURL.indexOf("#"));
//Set up new numbers for next and prev swipes
var np = parseInt(activePageNo)+1;
var pp = parseInt(activePageNo)-1;
//Set full div (page) ids
var prevPage = '';
var nextPage = 'page' + np;
if(activePageNo > 0) {
prevPage = 'page' + pp;
} else {
prevPage = 'page0';
}
if (event.type == 'swipeleft') {
if (nextPage) {
$.mobile.pageContainer.pagecontainer("change", activeURL + '#' + nextPage, {
transition: "slide"
});
}
}
if (event.type == 'swiperight') {
if (prevPage) {
$.mobile.pageContainer.pagecontainer("change", activeURL + '#' + prevPage, {
transition: "slide",
reverse: true
});
}
}
});
希望这有助于其他希望从旧的1.4进行更改并为新的1.5做好准备的人:)我不同意这是重复的,在mobile jQuery 1.5中发布的“activePage”将被删除。因此,使用您的解决方案只是暂时的?请更改您的视图。@Omar,请删除重复的标记。这不是重复的,您的回答并不能解决我的问题!我已经等了一个小时,忽略我将不起作用。您没有忘记我您使用的是哪个版本。这不起作用。我正在使用Appery.io和模板。更改文档不是我想要更改的,而是活动div。可能我尝试了错误的方法。但我应该添加类以使其活动。滑动起作用,但我的滑动也起作用,但您示例中的页面显示了一个空页面,带有关于模板或任何内容?@AndrewWalker在上面的代码中,它更改了pages div而不是document。是否要更改pages(HTML)或pages(div)?我试图更改文档,因为它看起来好像,即使使用模板,整个页面也会加载新内容,即使它是一个模板。因此,它看起来像是使用新的活动div重新加载模板(或第页)。但是通过重新加载文档而不是div,您得到的是相同的页面。并且没有任何变化。在您的示例中,文档变为空白页面。@AndrewWalker,那么您正试图加载一个新的HTML页面,对吗?我想这就是它试图做的。我需要进一步研究。在我看来,它需要重新加载整个页面并添加一个新的HTML页面新建div,其中包含来自另一个文件的内容