2013-07-03 42 views
1

之前解雇我不知道,如果我在这里做了一些愚蠢的错误,但面临页面初始化射击回调函数实际事件发生之前的这个问题。 下面是代码JQuery的回调函数事件

$(document).on("pageinit",function(){ 
$("#discInvitePopUp").popup({ 
     transition: "slidedown", 
     history: false, 
     afterclose: function(event, ui) { 

      activeDiscInviteCloseHandler(); 
     }, 
     afteropen: function(event, ui) { 
      openDiscFrmInvite(); 
     } 
    }); 

} 

这里的回调函数:

function activeDiscInviteCloseHandler(){ 
    //some code 
    //curDiscInv set 
    alert("evt"); 
    $.post("/ajaxReq/user_action.php", { 
     unsetInvite:JSON.stringify(curDiscInv) 
    }, function(data){ 


    }); 

} 
function openDiscFrmInvite(){ 
    //some code 
} 

这里的问题是,

activeDiscInviteCloseHandler()

函数被调用,只要pageinit事件是由于它发送的结果而触发的将邮件数据发送到服务器,这是不可取的。

任何可能的解决方案,以避免这种情况。

+0

这似乎是新的功能,以及类似的问题已经被用户有一个jQuery开发手机论坛指出。不要低估你在jQuery移动中遇到错误的可能性。 –

+1

你需要'setTimeout'来打开弹出窗口。由于页面转换期间发生的事件以及浏览器引起的延迟,它会在pageinit上触发两次。 http://stackoverflow.com/a/15738426/1771795 – Omar

+0

你可以给我们整个代码,也许jquery mobile会触发页面init关闭所以弹出窗口不显示? – abdu

回答

-3

而不是

$(document).on("pageinit",function()... 

尝试

$(document).ready(function()... 
+0

的jQuery(“.selector”)。在(‘pageinit’,函数(事件){...}) 我们建议结合该事件,而不是DOM准备就绪(),因为这会无论网页是否加载工作直接或者如果内容被拉入另一个页面作为Ajax导航系统的一部分。 – sferret

+0

'.ready'不应该与jquery mobile一起使用。 – Omar

+0

对不起,不知道。它只是与我的实施工作 –