javascript - jQueryMobile : When data-role ="page" 's JS generated content is created/remove?

标签 javascript jquery html jquery-mobile

给定一个 one-html-multiple-pages 应用程序,在我的每个页面中,我计划 JS 注入(inject)很长的 html 代码和动画,这些代码和动画可能很重。 HTML 代码如下:

<div data-role="page" id="page11">
  ...
</div>
<div data-role="page" id="page12">
 <h2 id="anchor12">Title: Page 12</h2>
 <script>myScript12() // inject complex content to #anchor12</script>
</div>

<强>1。我的 myScript12() 何时被触发? (当我打开 .html 文件或当我单击并打开 #page12 时?

<强>2。当我将 #page12 留给其他页面时,JS 生成的内容会发生什么?


编辑:我不想在 .html 加载时加载所有 20 个大页面。


解决方案: +1 为 detailed explanation by Gajotres (JQM: document ready vs page events) ,下面是我当前的解决方案。仅当显示给定的 data-role="page"时运行 js...

使用以下 JQM HTML/JS:

<div data-role="page" id="page12">
 <h2 id="anchor12">Title: Page 12</h2>
 <script>
$('#page12').on('pageinit') { //only run when page is displayed
     myScript12() // inject complex content to #anchor12
});</script>
</div>

最佳答案

  1. 页面加载到 DOM 后,该脚本就会立即执行。这就是页面事件存在的原因。基本上,如果您想计算代码执行的时间,请在页面事件中进行。如果您想了解有关页面事件的更多信息,请阅读我的其他答案: jQuery Mobile: document ready vs page events

  2. 当您离开页面时,内容仍然会加载到 DOM 中。如果您想阻止大型 DOM 内容,您可以使用 pagehide清除上一页内容的事件。还有一个属性可以放置在 data-role="page"div 内以防止 DOM 兑现。属性名称为 data-dom-cache="true",您可以找到更多相关信息 here .

关于javascript - jQueryMobile : When data-role ="page" 's JS generated content is created/remove?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16597481/

相关文章:

javascript - 使用 JS 的 100% 页面高度在某些页面上不起作用

javascript - 使用 Materialise 和 jQuery 进行电子邮件验证

javascript - 如何隐藏 highchart x - 轴数据值

javascript - 如果所有 child 都隐藏,jQuery 隐藏父 block

html - Jekyll Github 页面如何隐藏帖子

javascript - 如何选择 radio 输入而不是多个

javascript - 如何在没有状态变量的情况下更新函数表达式?

javascript - 网页中每个部分的最大化、最小化和关闭按钮

php - 数据放入下拉列表

javascript - 站点 "significantly"中包含的脚本数量是否会降低性能?