【问题标题】:want to show a dialog message in jQuery mobile when it's first loaded想要在第一次加载时在 jQuery mobile 中显示一个对话框消息
【发布时间】:2013-03-20 03:43:52
【问题描述】:

在 jQuery mobile 中,我想在第一次加载此页面时在我的主页 (index.html) 中显示一条对话框消息。但是,如果用户导航到我网站的不同页面并返回到我的index.html,我不想显示显示对话框。

我正在考虑使用pageshowpagebeforeshow 方法并检查prevPage 对象。有没有其他的好方法?

【问题讨论】:

  • @David 这是另一种选择,谢谢!

标签: javascript jquery html css jquery-mobile


【解决方案1】:

使用pageinit事件,它只会触发一次。再简单不过了。

jsFiddle 示例:http://jsfiddle.net/Gajotres/e9RcT/

$(document).on('pageinit', '#index', function(){       
    alert('This event will trigger only once!');
});

要测试它,请转到第二页然后返回。

【讨论】:

  • 这种方法的唯一问题是它假定页面将保持缓存在 DOM 中。如果#index 被刷新,我很确定pageinit 在重新加载页面时会再次被触发。如果是这种情况,您将需要使用某种类型的本地存储或 cookie 来维持已显示消息的状态。
  • @Gajotres 这是一个非常快速的解决方案。我也在考虑 andleer 的评论。在这种情况下,本地存储将是一个很好的解决方案。谢谢!
  • 如果您还想合并 andleer 解决方案,请查看我的另一篇文章:stackoverflow.com/a/14469041/1848600,您将在此处使用本地存储的示例。
【解决方案2】:

在 DOM 上加载将确保您想要发生的任何事情只发生在第一页初始化时:

$(document).ready(function(){
  // do stuff here
});

来源:http://jquerymobile.com/test/docs/api/events.html

【讨论】:

  • 在发布内容之前阅读。文档就绪不应该与 jQuery Mobile 一起使用。关于 pageinit:要在加载和创建新页面时执行代码,您可以绑定到 pageinit 事件。此事件在本页底部有详细说明。
  • 它是“推荐的”,不强制作为使用 jQuery Mobile 的要求。但我看到你的回答也是相对的。谢谢加乔
  • @Gajotres 如果document.ready 事件处理程序仅在index.html 页面(<div data-role="page"> 元素之外)上找到,那么这将按需要工作。只有当用户直接加载或刷新index.html 页面时,document.ready 事件处理程序才会触发。如果用户在登陆另一个页面后导航到index.html 页面,事件处理程序将不会触发。似乎这是document.ready 实际上比pageinit 或任何其他jQuery Mobile 事件更好的情况。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-25
  • 2012-07-09
  • 2011-03-30
  • 1970-01-01
相关资源
最近更新 更多