Jquery 移动弹出窗口在页面调整大小或滚动时在错误位置重新打开

标签 jquery events jquery-mobile mobile popup

在 PC 浏览器中,存在弹出窗口在调整窗口大小时改变其位置的问题。我用谷歌搜索了一下,发现 JMF 有一个错误,将positionTo从origin/#codeSource更改为window。

在移动浏览器中,我在页面滚动时遇到同样的问题。弹出窗口再次呈现在错误的位置。

我需要以某种方式设置正确的位置,或者避免在窗口大小调整和页面滚动时多次重新打开。

有人可以给我一些建议吗?

最佳答案

您需要监听 popupbeforeposition 事件并更改该事件忽略的 ui 对象。该对象拥有三个定义弹出窗口位置的属性:ui.xui.yui.positionTo

后一个属性的默认值为 window,它会覆盖之前添加到 ui.xui 的任何值.y。因此,每当 popupafterposition 触发时,ui.positionTo 应更改为 null 而不是 window

编辑:以下代码应包含在 pageinit 事件 (2) 中。

$(document).on("pageinit", function () {
  $("#popup_ID").on("popupbeforeposition", function (e, ui) {
      ui.x = value; /* (1) */
      ui.y = value; 
      ui.positionTo = null; /* this */
  });
});

Demo

(1) 值 = 数字

(2) pageinit 是一个特殊的 jQM 事件,它相当于 .ready() 并且应该用来代替它。

关于Jquery 移动弹出窗口在页面调整大小或滚动时在错误位置重新打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21732089/

相关文章:

javascript - 在 Apps Script Web App 中实现一个 slider 。 oninput 事件未触发

javascript - 防止 li 元素内部的 div 中的单击事件

数据角色 ="page"加载上的 jQuery Mobile window.resize()

java - 项目名称被附加到输出编写器

javascript - jquery - 附加/分离多个div onclick

javascript - 基于对象属性的点击事件添加和删除事件类到进度条

javascript - 不明白为什么这个 javascript 在 jAm 中不起作用

javascript - 我可以从内部更改 iFrame 的源吗?

javascript - 在 onkeyup 事件中更改值时不会触发 onchange 事件

javascript - JQM .load()/.html() 内容未设置样式,已尝试我找到的所有内容