Javascript Swipeleft或Swiperight不更改页面

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

我在尝试在Appery.io应用程序上进行页面更改时遇到了这个问题。滑动手势正在工作,但页面没有更改,并使用
$(此)。下一步('[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,其中包含来自另一个文件的内容