Jquery 对话框选择器
由于我们的一些用户已升级到iOS7,我们发现outphonegap(cordova)应用程序中的一些页面似乎出现了故障。情况是这样的: 用户想要预订作业,因此他们单击以预订作业,此时会出现一个对话框,用户选择要预订作业的小时数,然后单击“预订”。应用程序使用AJAX与服务器通信,AJAX将返回结果。如果出现错误(例如,他们无法预订此人,则应用程序会显示另一个对话框。但是,当我们尝试在该对话框上运行JavaScript时,只要它尝试通过Jquery 对话框选择器,jquery,jquery-mobile,cordova,ios7,Jquery,Jquery Mobile,Cordova,Ios7,由于我们的一些用户已升级到iOS7,我们发现outphonegap(cordova)应用程序中的一些页面似乎出现了故障。情况是这样的: 用户想要预订作业,因此他们单击以预订作业,此时会出现一个对话框,用户选择要预订作业的小时数,然后单击“预订”。应用程序使用AJAX与服务器通信,AJAX将返回结果。如果出现错误(例如,他们无法预订此人,则应用程序会显示另一个对话框。但是,当我们尝试在该对话框上运行JavaScript时,只要它尝试通过$(“#警告”)访问div,应用程序就会停止运行 有人能告诉我
$(“#警告”)
访问div,应用程序就会停止运行
有人能告诉我为什么会发生这种情况以及发生了什么。(它在iOS6上工作,我有日志记录,知道它必须在li
添加到ul
之前,我尝试更改我们将其移动到的事件,看看div是否存在(这导致应用程序崩溃),将JavaScript移到页面底部。我的想法刚刚用完
我们正在运行jquerymobile1.3.2,jquery1.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,然后添加了项目。