Jquery 对话框选择器

Jquery 对话框选择器,jquery,jquery-mobile,cordova,ios7,Jquery,Jquery Mobile,Cordova,Ios7,由于我们的一些用户已升级到iOS7,我们发现outphonegap(cordova)应用程序中的一些页面似乎出现了故障。情况是这样的: 用户想要预订作业,因此他们单击以预订作业,此时会出现一个对话框,用户选择要预订作业的小时数,然后单击“预订”。应用程序使用AJAX与服务器通信,AJAX将返回结果。如果出现错误(例如,他们无法预订此人,则应用程序会显示另一个对话框。但是,当我们尝试在该对话框上运行JavaScript时,只要它尝试通过$(“#警告”)访问div,应用程序就会停止运行 有人能告诉我

由于我们的一些用户已升级到iOS7,我们发现outphonegap(cordova)应用程序中的一些页面似乎出现了故障。情况是这样的:

用户想要预订作业,因此他们单击以预订作业,此时会出现一个对话框,用户选择要预订作业的小时数,然后单击“预订”。应用程序使用AJAX与服务器通信,AJAX将返回结果。如果出现错误(例如,他们无法预订此人,则应用程序会显示另一个对话框。但是,当我们尝试在该对话框上运行JavaScript时,只要它尝试通过
$(“#警告”)
访问div,应用程序就会停止运行

有人能告诉我为什么会发生这种情况以及发生了什么。(它在iOS6上工作,我有日志记录,知道它必须在
li
添加到
ul
之前,我尝试更改我们将其移动到的事件,看看div是否存在(这导致应用程序崩溃),将JavaScript移到页面底部。我的想法刚刚用完

我们正在运行jquerymobile1.3.2jquery1.9。Append似乎可以在所有其他页面上运行,与我们在这里使用的方式相同

if (Ps.Logic.Type.hasValue(logicResult.Warnings)) {

    for (var f in logicResult.Warnings) {
        //add to warnings list
        Ps.File.Log("Diary_Logic_Error_Dialogue: Processing Warnings : (" + f + ") " + logicResult.Warnings[f], function () {
            //code
        });
        $('#WarningsList').append("<li>" + logicResult.Warnings[f] + "</li>");

        Ps.File.Log("Diary_Logic_Error_Dialogue: Processing Warnings : Added (" + f + ")", function () {
            //code 
        });
    }

    Ps.File.Log("Diary_Logic_Error_Dialogue: Processing Warnings : Done", function () {
        //code
    });

} else {
    Ps.File.Log("Diary_Logic_Error_Dialogue: Processing Warnings - No Value (Skipping)", function () {
        //code
    });
}
if(Ps.Logic.Type.hasValue(logicResult.Warnings)){
for(logicResult.Warnings中的变量f){
//添加到警告列表
Ps.File.Log(“日志逻辑错误对话:处理警告:(“+f+”)”+logicResult.Warnings[f],函数(){
//代码
});
$(“#警告列表”)。追加(“
  • ”+logicResult.Warnings[f]+“
  • ”); 日志(“日志逻辑错误对话:处理警告:添加(“+f+”),函数(){ //代码 }); } Log(“日志\逻辑\错误\对话:处理警告:完成”),函数(){ //代码 }); }否则{ Log(“日志\逻辑\错误\对话:处理警告-无值(跳过)”,函数(){ //代码 }); }
    编辑:

    基本上,用户将作业放入一个时间段,然后会出现以下对话框:

    当用户单击“分配预订”时,客户机将与服务器对话,服务器将对此进行检查。如果出现问题,则应显示以下对话框:


    在ios6上,这可以很好地工作,错误会显示出来,用户可以继续或取消。但是,当我们尝试显示此对话(图2中的对话)时,由于更新到ios7然后,当我们试图对DOM进行编辑/添加项时,它似乎会停止处理该页面。

    似乎在我们要访问的页面上放置事件侦听器实际上不起作用-调用事件时,就好像DOM不在那里一样

    Index.html

     $.mobile.changePage("Page.html")
    
    $('#diary_Logic_error_dialog_page').on("pageshow", function () {
        $('#ProceedButton').bind("click", Test);
    });
    
    function PageShowExample() { ... }
    
    Page.html

     $.mobile.changePage("Page.html")
    
    $('#diary_Logic_error_dialog_page').on("pageshow", function () {
        $('#ProceedButton').bind("click", Test);
    });
    
    function PageShowExample() { ... }
    
    然而,我们似乎不能这样做。似乎至少在ios7中,我们必须这样做:

    Index.html

     $.mobile.changePage("Page.html")
    
    $('#diary_Logic_error_dialog_page').on("pageshow", function () {
        $('#ProceedButton').bind("click", Test);
    });
    
    function PageShowExample() { ... }
    
    (我的这一行实际上位于index.html页面引用的另一个javascript文件中。)

    Page.html

     $.mobile.changePage("Page.html")
    
    $('#diary_Logic_error_dialog_page').on("pageshow", function () {
        $('#ProceedButton').bind("click", Test);
    });
    
    function PageShowExample() { ... }
    

    通过这样做,似乎调用页面显示时DOM就在那里,因此只要我们尝试并操作DOM,它不会立即消失。

    什么时候选择对话框?顺便问一下,它是对话框还是弹出窗口(只是为了澄清)。如果是对话框,请尝试
    $(文档)。on('pageshow','#warning',function(){};
    。这是一个对话,警告是一个ul,然后添加了项目。