1

像这样将我的绑定添加到 pageinit 事件中:

$('#mypage').on("pageinit", function () {

     $('#login-sumbit').on('click', function () { 
       console.log('button clicked');
     });

});

我希望 pageinit 只绑定一次点击事件。但是在我的单页应用程序中发生的情况是,每次加载页面时按钮都会绑定,即使单击返回也是如此。

这会导致不需要的多个重复绑定。关于在我的单页应用程序中使用什么事件仅绑定一次的任何想法,以便在同一会话中再次加载页面(后退按钮,加载内联页面)不会重新绑定?

4

2 回答 2

0

看起来我自己找到了答案,结果证明 pageinit 每次加载页面时都会触发,即使它没有从服务器重新加载,否则会在显示新页面时触发。

pageinit 是正确的事件,但我需要使用 .one 而不是 .on,.one 只会绑定一次。

$('#mypage').on("pageinit", function () {

     $('#login-sumbit').one('click', function () { 
       console.log('button clicked');
     });

});

现在一切都按预期工作。更好的是,我发现您可以将 .one 与 pageinit 事件一起使用,以更好地控制您的绑定和数据加载,非常适合我的要求。

http://api.jquery.com/one/

于 2013-06-21T23:01:50.813 回答
0

你可以使用:

 $('#login-sumbit').off('click').on('click', function(e) {
     console.log('button clicked');
 }); 
于 2013-06-21T23:02:17.147 回答