jQuery Mobile 和加载额外的脚本让我很生气。我已经查看了他们的文档,并且我了解他们的 AJAX 模型会导致一些复杂性,我已经从这里获得了一些帮助来应用信息,但我仍然无法让所有东西都能始终如一地工作。这是一个例子:
我有一个包含 2 个表单字段的页面,一个用于日期,一个用于时间。我在日期字段上调用 jQuery UI Datepicker,在时间字段上调用第 3 方 Timepicker(这个 timepicker)。如果我直接访问该页面或进行刷新,两者都运行得很好。但是,如果我从其他地方导航到该页面,则只有 datepicker 运行。它们都链接在我的文档头中,并且都在页面上调用pageinit
。为什么一个有效而另一个无效?
头:
<!DOCTYPE html>
<!--[if IE 8]> <html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
<meta charset="utf-8">
<title>Test Site</title>
<!-- Make it Mobile friendly -->
<meta name="HandheldFriendly" content="True">
<meta name="MobileOptimized" content="320">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="cleartype" content="on">
<!-- Stylesheets -->
<link rel="stylesheet" href="_css/normalize.css" />
<link href="http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css" rel="stylesheet">
<link rel="stylesheet" href="_css/jquery.mobile.structure-1.3.1.css" />
<link rel="stylesheet" href="_css/red_variant/red_variant.css" />
<link href="_libraries/jquery-ui-timepicker-0.3.2/jquery.ui.timepicker.css" rel="stylesheet" type="text/css" />
<link rel="stylesheet" href="_css/foundation.css" />
<link rel="stylesheet" href="_css/main.css" />
<!-- jQuery Including UI and Mobile -->
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script src="http://code.jquery.com/ui/1.10.2/jquery-ui.js" type="text/javascript"></script>
<script src="http://code.jquery.com/mobile/1.3.1/jquery.mobile-1.3.1.min.js" type="text/javascript"></script>
<script src="_libraries/jquery-ui-timepicker-0.3.2/jquery.ui.timepicker.js" type="text/javascript"></script>
</head>
有问题的表格:
<form>
<label for="addAgendaDate" class="ui-hidden-accessible">Date:</label>
<input name="addAgendaDate" id="addAgendaDate" placeholder="Date" value="" type="text">
<label for="addAgendaTime" class="ui-hidden-accessible">Time:</label>
<input name="addAgendaTime" id="addAgendaTime" placeholder="Time" value="" type="text">
</form>
<script>
$(document).on('pageinit', function(){
$( "#addAgendaTime" ).timepicker({
showPeriod: true,
showLeadingZero: true
});
});
$(document).on('pageinit', function(){
$( "#addAgendaDate" ).datepicker();
});
</script>
我错过了什么导致两者都可以在正常页面加载上工作但只有一个可以在 jQuery Mobile AJAX 加载上工作?
解决! 花了一个月的时间,但我终于解决了这个问题。Gajotres 和 Kevin B 帮助我了解了底层脚本使用问题,但我的每个脚本问题最终都有不同的附加问题:
- 下面的日期和时间选择器不一致实际上是由于 z-index 的 CSS 问题。时间选择器正在弹出并且在脚本方面运行良好,但由于某种原因,jQueryUI 将其 z-index inline 设置为零,这将其置于移动页面覆盖层之后。CSS覆盖(必须做一个!重要)修复了这个问题。
- jQuery Countdown 出现问题,这是一个 ID 重复问题,因为我有一个 PHP,包括将相同的页脚拉入每个页面。改成类来解决。