jQuery Mobile仅在偶数编号的页面访问中不应用样式。此外,Ajax呼吁增加每次访问

时间:2012-09-27 03:40:22

标签: jquery jquery-mobile

好吧,不可否认,这里有很多词,但这是我以前从未见过的一个问题,而且非常特别。因此,阅读可能值得。

我有一个动态生成Listviews的页面,以响应从$ .mobile.autocomplete点击的链接。
列表视图有两种类型的<li>'s,并且相应地为主题,并且相应地设置或不设置类 让我们称他们为l-1和l-2。

当我点击 l-1 时,应该发生的是,该listitem切换一个类,该类给出了所选项目的外观,类似于$ .ui.selected - 并且只选择了一个每个列表允许项目。
这可以使用基本的jQuery轻松完成。

单击 l-1 时还应该发生的事情是,ajax调用是否向服务器发送特定值,以及回调函数突出显示成功的页脚文本为绿色,如果有,则为红色是一个错误。

单击 l-2 时应该发生的事情是,该列表被另一个列表替换,该列表是此特定层次结构的下一级别。

实施起来有点棘手,但是一旦我弄明白,就没有什么不是直截了当的。它的工作......有点像。

这是奇怪的事情。如果我转到页面一次,选择一个项目,然后完成上面的步骤,一切都按预期工作。  (我们将在这里查看 l-1 )。我可以根据自己的喜好自动生成多次生成列表视图,单击 l-1 ,应用样式,ajax成功触发,元素突出显示,瞧!我很开心,鼓励自己背对着自己。

然而 ,这就是怪异的开始 - 让我们说我离开页面回到主页(不是使用后退按钮,但是只是一个简单的jQuery Mobile链接),然后在那里,我点击链接把我带回这个页面,我带回来了。假设此页面名为 Page-2 。在 Page-2 上,事情开始很好:我使用自动完成生成列表,但是当我点击 l-1 项时,会发生以下情况(或不发生) :

  1. 样式应用于列表项目。
  2. 调用ajax请求,并返回成功。
  3. 突出显示成功元素。
  4. 奇怪的是,ajax被称为两次并返回相同的数据。
  5. 如果我离开并再次回来,同样的事情会发生,除了

    1. 样式 应用于listitem。
    2. ajax调用现在三次次。
    3. 这种模式以下列方式继续(大概有一段时间 - 我尝试了8次):

      1. 在奇怪的时候回来,应用了 的风格,例如: (第3次回来,5日,7日)
      2. 一个人甚至会回来,风格不适用。例如(第4,第6,第8)
      3. 每次回程,ajax请求的数量增加一个。在第一次旅行和第8次旅行中查看网络面板的照片(除了相同的鼠标点击之外,这只是生成的。)
      4. 第一次访问,1单击

        第8页Vist,1单击

        您可以通过右键单击并在新标签页中选择打开,以全新大小的标签打开图像。

        任何洞察力?

        更新:美国东部时间9/27/2012,美国东部时间下午1点05分。

        修复在偶数页面访问时不会将样式应用于单击按钮的问题,但我不禁觉得修复原因只是修复,因为潜在的问题。也许我的解决方案修复它的事实将更好地解决问题。

        解决方案是将按钮的样式从ajax调用之前移动到回调,因此在ajax 请求完成之后才会应用样式。

1 个答案:

答案 0 :(得分:0)

好吧 - 好吧,我想这对于任何人花时间阅读都太久了。我找到了一个解决方案,但我认为解决方案并没有解决问题的核心。解决方案是在调用重复的ajax后直接添加$ .fn.event.stopPropagation。

为什么这应该有助于解决这个问题。我唯一能想到的就是会产生这个问题,并且我的解决方案就是每次调用pageInit时都会以某种方式调用它(无论我在哪里绑定它,结果都是一样的,即我尝试过pageLoad,pageShow等)该函数被克隆并附加到不断增长的函数的末尾,该函数一直与pageInit绑定。

当然这没有任何意义,而且我从来没有在其他地方发生这种情况,所以我不知所措,但是,现在,无论如何,它已被修复,并没有发现明显的不利影响。