阿弥陀佛,请教各位师兄一个关于JqueryMobile的事件重复绑定的问题,详细情况如下:
有 A.html和B.html两个页面,A页面有个<a>链接向B.html。
B页面的pageinit事件里弹出一个提示,代码如下:
$(document).on("pageinit", "#page2", function (event) {
     alert("page2 init");
});
同时B页面的头部有添加返回按钮,代码如下:
<div data-theme="a" data-role="header">
     <a id="btnBack" data-role="button" data-inline="true" data-rel="back"
         data-icon="back" data-iconpos="left" class="ui-btn-left">返回
     </a>
     <h3>测试页面B</h3>
</div>     遇到的问题是,从A页面点<a>标签链接到B页面后,会弹出预期的“page2 init”,点返回(或者浏览器的后退)返回到A页面,再点<a>标签,就会弹出两次“page2 init”,等于是B页面的pageinit被执行了2次。每次点击返回后再点链接转到B页面,pageinit事件就都会被累加执行一次。
     尝试过不管把B页面的pageinit写在一个单独的文件里然后引用,还是直接写在B页面的div page里,绑定页面的各种事件都会被累加。
     请教师兄这问题怎么解决?感谢诸位师兄。JqueryMobileJavaScript

解决方案 »

  1.   

    懒得细看了
    看看有木有解绑事件$("xx").unbind("on").on(function(){}); // 之类的
      

  2.   


      阿弥陀佛,感谢师兄。受师兄的启发,问题已经解决了。
      提供修改后的代码供其他遇到此问题的师兄参考。修改后的代码如下:
      把B页面的pageinit事件代码改成了如下:
         
    $(document).on("pageinit", "#page2", initPage2); function initPage2(event) {
           $(document).off('pageinit', '#page2', initPage2);
           alert("page2 init" + event.target.baseURI);
     };
         而且也可以正常使用data和event这两个参数