无法触发事件$ .mobile.changePage

时间:2012-03-15 07:26:04

标签: javascript jquery jquery-mobile

到目前为止,我仍然没有弄清楚为什么$ .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

请帮忙。

2 个答案:

答案 0 :(得分:1)

Hiya可能这可能会让你知道你可以复制粘贴代码:

http://jsfiddle.net/r4DyU/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以规则输出,但它应该可以正常工作。