Jquery元素仅在页面刷新后才起作用

时间:2015-10-22 15:36:01

标签: javascript jquery html twitter-bootstrap jquery-ui

我正在构建基于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>

1 个答案:

答案 0 :(得分:2)

可能发生的情况是,您的初始页面加载尝试从网络加载所有内容,而第二个加载从浏览器缓存中检索资产。您可以使用开发人员工具来验证这一点,以便始终加载不带缓存;如果我的假设是正确的,那么即使你重新加载页面,你也会看到错误的普遍性。

正如@vanburen在评论中指出的那样,可能的解释是你没有正确地订购你的脚本。应该始终首先加载jQuery,但是现在你已经在Bootstrap之后得到了它。当您尝试在打开开发人员工具的情况下按原样加载页面时,您会看到控制台错误:

  

未捕获错误:Bootstrap的JavaScript需要jQuery(匿名函数)@ bootstrap.min.js:6

作为额外的优化,您可以考虑将CSS放在同步脚本之前,这样浏览器就可以在同时加载JavaScript的同时加载和解析它们。

结论:确保熟悉您的开发人员工具。当您遇到意外行为时,它们应始终是您的第一个资源。