我每个页面都有一个文件,我试图在每个页面上实现 pageinit 事件处理程序(我认为严格属于一个页面的内容应该在那里声明),如下所示:
<body>
<div id="myPage" data-role="page">
<!-- Content here -->
<script type="text/javascript">
$("#myPage").live('pageinit', function() {
// do something here...
});
</script>
</div>
</body>
该事件已正确绑定(bind)到页面,因此代码已执行,但是 - 现在是我的问题 - 如果我转到另一个页面并稍后返回 pageinit 事件将执行两次。我认为这是因为 .live 方法再次将 pageinit 事件绑定(bind)到页面。但是 pageinit 事件不应该只在页面初始化时调用一次吗?我在这里缺少什么?
最佳答案
我认为最好将您的 JavaScript 代码移动到另一个文件中,因为当您在您的网站上导航时 jQuery Mobile 可能会清理(读取:从 DOM 中删除)该 myPage
页面,因此必须再次加载它并重新运行相同的块您定义的代码并为 pageinit
事件绑定(bind)了 2 个监听器。
这基本上就是为什么他们建议使用 live
或 on
函数的原因,但是如果您在页面上包含绑定(bind)代码,它就会失败;)
但是,如果您坚持将代码放在每页上,那么请使用 bind
而不是 live
。
引用:http://jquerymobile.com/demos/1.0/docs/pages/page-cache.html
关于jquery-mobile - 如何正确使用pageinit?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8782359/