jQuery Mobile - 无法将pagebeforechange绑定到页面ID?

时间:2012-01-09 18:38:46

标签: jquery mobile jquery-mobile

我只能将pagebeforechange绑定到整个jquery移动文档,而不是单个页面。谁能解释为什么this不起作用?

4 个答案:

答案 0 :(得分:2)

$("div[data-role='page']").live( "pagebeforehide", function( event ) {
alert('This alert should trigger before Next Page Here is shown?');
});

(查看link了解详情) 你也可以使用bind代替live,希望它有所帮助。

答案 1 :(得分:1)

使用jQuery Mobile - 我很确定你不会绑定到文档,而是绑定到pageinit属性。

绑定到doc会产生问题...请记住,此链接再次在#home上工作,您将需要beforepageshow的另一个事件监听器或者再次显示该页面之前的内容。

This doc非常有用......

答案 2 :(得分:1)

JQM页面的选择器:

$('.ui-page')

将事件监听器添加到文档中的所有页面可以完成:

$(document).delegate(".ui-page","pagebeforehide", function(evt, ui){
   alert('pagebeforehide fired');
}

使用 delegate

小提琴

注意使用 bind 而不是委托将不适用于上述选择器,因为仅在创建页面时添加ui-page类。

为了使用 bind ,请使用以下选择器:

$("div[data-role='page']")

使用(仅在文档准备好或正文已加载后)添加事件侦听器:

$("div[data-role='page']").bind("pagebeforehide", function(evt, ui{
alert('pagebeforehide fired');
}

使用 bind

小提琴

我还建议使用mobileinit事件而不是文档就绪!

答案 3 :(得分:-1)

我遇到了完全相同的问题,但我至少为你解决了问题。警告:这是一个愚蠢,可怕的代码。 但它完成了这项工作。

window.doubleLoadPreventer = 0;

$(document).bind('pagebeforechange', function(e, data){

    if ( window.doubleLoadPreventer === 1 ) {
        window.doubleLoadPreventer = 0;
        return;
    } else {
        window.doubleLoadPreventer = 1;
    }

    //your normal event handler code here
}