【问题标题】:Pageshow in JQM adds new page without removing old onesJQM 中的 Pageshow 添加新页面而不删除旧页面
【发布时间】:2014-11-03 15:58:04
【问题描述】:

我的网页有问题。 我认为是这样的问题:https://stackoverflow.com/questions/24350594/jqm-pageshow-event-firing-number-of-times-on-page-visit

每次我返回并进入我的页面(使用 pageshow)时,它都会再次加载所有内容(如我所愿),但如果我进入 3、4 或更多次,我似乎有两个或更多页面。所以每次我按下一个按钮将数据发送到服务器时,它都会执行很多次(就像我进出那个网页的次数一样)

我每次进去都需要重新加载整个页面,所以我不能用一个来代替:

$(document).on("pageshow", '#activity', function() {

我也试过:

$(document).off("pageshow", '#activity').on("pageshow", '#activity', function() {

但它似乎不起作用。

有什么办法可以让我每次出门都消掉一个网页?我只想拥有一份

【问题讨论】:

  • 您是否使用pageshow 添加绑定?
  • 我正在使用这个:$(document).on("pageshow", '#activity', function() {
  • 好的,你在里面运行什么样的代码?
  • 嗯.. 我不知道我是否理解你。我正在执行一个 ajax 调用来填充一个选择,然后我有一些“功能”,比如: $(#selectActivity").change(.... 在 ajax 调用之外但在 pageshow 内
  • 不要在pageshow中添加changeclicksubmitswipe等监听器,只要pageshow触发,它们就会被复制。

标签: javascript jquery-mobile


【解决方案1】:

要添加绑定/附加侦听器,例如clickchange 等,它们应该放在pagecreate 事件中,因为它每页触发一次。该事件相当于.ready()

$(document).on("pagecreate", '#activity', function() {
  /* listeners */
  $("#foo").on("change", function () {
    $.ajax();
  });
});

使用pageshow/pagecontainershow 和类似的事件来操作DOM或执行其他功能。

jQM 1.3

$(document).on("pageshow", '#activity', function() {
  /* manipulate DOM */
  $("#foo").removeClass("bar");

  /* run functions */
  $.doSomething();
});

jQM 1.4

$(document).on("pagecontainershow", function(e, data) {
  if(data.toPage[0].id == "activity") {
    /* manipulate DOM */
    $("#foo", data.toPage).removeClass("bar");

    /* run functions */
    $.doSomething();
  }
});

【讨论】:

  • 那是!!。非常感谢奥马尔。也为您详细解释。我会保留这个答案以备将来检查。
  • @Biribu 不客气,我很高兴能帮上忙。有关 jQM 事件的更多信息,请查看link
  • 我也记下来了。
猜你喜欢
  • 1970-01-01
  • 2015-08-09
  • 2021-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多