我正在构建基于Reacts的应用程序,我在页面上有一些jquery元素,例如JqueryUI日期选择器和bootstraps工具提示。
问题是这些选项在重新加载页面之前不起作用。
所以它就像第一次没有加载jQuery脚本一样。
我查看了控制台,看不到与jQuery / javascript相关的任何错误。
非常感谢任何帮助。这是我的index.html页面
<!doctype html>
<html class="no-js" lang="">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="description" content="">
<meta name="viewport" content="width=device-width">
<title>ICETEA</title>
<!-- Latest compiled and minified JavaScript -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
<script src="https://code.jquery.com/jquery-2.1.3.min.js"></script>
<!-- JQuery UI JS - Used for the datepicker -->
<script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
<!-- Bootstrap theme -->
<link href="//netdna.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css" rel="stylesheet">
<link rel="stylesheet" href="/css/main.css">
<!-- JQuery UI CSS - Theme: Blitzer, used for the datepicker -->
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.2/themes/blitzer/jquery-ui.css">
</head>
<body>
<div id="app"></div>
<script src="/js/main.js"></script>
<script>
$(document).ready(function(){
$('[data-toggle="tooltip"]').tooltip();
});
</script>
<script>
$(function() {
$( "#datepicker" ).datepicker();
$( "#datepicker" ).change(function() {
$( "#datepicker" ).datepicker( "option", "dateFormat", "DD d MM" );
});
});
</script>
</body>
</html>
答案 0 :(得分:2)
可能发生的情况是,您的初始页面加载尝试从网络加载所有内容,而第二个加载从浏览器缓存中检索资产。您可以使用开发人员工具来验证这一点,以便始终加载不带缓存;如果我的假设是正确的,那么即使你重新加载页面,你也会看到错误的普遍性。
正如@vanburen在评论中指出的那样,可能的解释是你没有正确地订购你的脚本。应该始终首先加载jQuery,但是现在你已经在Bootstrap之后得到了它。当您尝试在打开开发人员工具的情况下按原样加载页面时,您会看到控制台错误:
未捕获错误:Bootstrap的JavaScript需要jQuery(匿名函数)@ bootstrap.min.js:6
作为额外的优化,您可以考虑将CSS放在同步脚本之前,这样浏览器就可以在同时加载JavaScript的同时加载和解析它们。
结论:确保熟悉您的开发人员工具。当您遇到意外行为时,它们应始终是您的第一个资源。