jQueryMobile替代$(document).ready(function()

时间:2013-07-17 15:45:27

标签: javascript jquery-mobile jquery

我正在创建一个Web应用程序的问题。我有一个函数,可以检查用户是否输入了某些数据,然后才能使用我的Web应用程序的某个部分。我一直在将我的函数绑定到页面创建事件。

$(document).on('pagecreate', function(){
                checkOpenCalls();
                alert('page create event firing');
});

如果在浏览页面之前用户没有输入函数的参数,checkOpenCalls函数会打开一个对话框,让用户输入数据。问题是,如果用户意外浏览到此页面并在对话框上点击取消。该对话框再次打开,用户陷入无限循环。

如果通过AJAX调用页面但是在关闭对话框时没有继续触发,会加载我的函数的事件是什么?我尝试了pageinitpageshow个事件,但每次显示页面时都会触发。

编辑:当你直接浏览页面时(在浏览器中打开一个新选项卡并直接进入页面)我得到了我想要的行为(关闭对话框并且没有打开新对话框)但是如果你去了到我的应用程序主页,然后浏览到功能网页我得到了我在上面的主帖中描述的行为。

1 个答案:

答案 0 :(得分:1)

您正在使用正确的页面事件,但问题是您正在为每个可能的页面和对话框使用它(因为对话框只是页面的另一个版本)。

您需要做的是将此事件仅限绑定到某个页面。例如,如果这是您的页面:

<div data-role="page" id="index">

</div>

只有在第一次创建此页面时,您才会使用此javascript执行:

$(document).on('pagecreate', '#index',function(){
    checkOpenCalls();
    alert('page create event firing');
});

如果你看一下,因为我的网页上有一个ID #index,这个 pagecreate 事件绑定到它,没有别的。