javascript - JS 多个 $(document).ready(function() 合并问题 :

标签 javascript jquery html

有两个主要的 JS 脚本。两者都按预期独立工作。其中一个用于菜单(目前不在 HTML 中),另一个用于动态更改的 div(在下面的 HTML 中)。 这两个都使用 $(document).ready(function () 当我将它们放在单独的文件中时,它们不起作用。将所有函数放在同一个 $(document).ready(function () 它仍然不起作用。 如果我将它们作为两个独立的脚本放在同一个文件中,则只有顶部的脚本可以按预期工作。 有任何想法吗?我是 JS 新手,我正在努力弄清楚代码是如何布局的。

JS:

(function ($) {
    "use strict";
    var mainApp = {

        main_fun: function () {
            $('#main-menu').metisMenu();

            $(window).bind("load resize", function () {
                if ($(this).width() < 768) {
                    $('div.sidebar-collapse').addClass('collapse')
                } else {
                    $('div.sidebar-collapse').removeClass('collapse')
                }
            });



        },

        initialization: function () {
            mainApp.main_fun();

        }

    }
    $(document).ready(function () {
      mainApp.main_fun();

    });
  }(jQuery));

第二个 JS

$(document).ready(function(){

var $content = $('.menu-content');
function showContent(type) {
  $($content).hide();
  $('#'+type).show();
}

$('.menu').on('click', '.menu-btn', function(e) {
  showContent(e.currentTarget.hash.slice(1));
  e.preventDefault();

});
  showContent('about');
  });

HTML:

<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <script src= "http://code.jquery.com/jquery-1.10.2.min.js" type="text/javascript"></script>
    <script src="{{ url_for('static',filename='js/menu/custom.js') }}"></script>

<style>
div{
height: 200px;
width: 50%;
background-color: powderblue;
}
</style>

</head>

<body>


<ul class="menu">
  <li><a href="#about" class="menu-btn">About</a></li>
  <li><a href="#contact" class="menu-btn">Contact</a></li>
  <li><a href="#cluster" class="menu-btn">cluster</a></li>
</ul>

<div id="about" class="menu-content">This is static - About</div>
<div id="contact" class="menu-content">This is static - Contact</div>
<div id="cluster" class="menu-content">cluster</div>


</body>

</html>

Current result:

Expected Result - When I click on the buttons the single div should change

最佳答案

这可能是合并代码,请尝试一下:

$(document).ready(function(){
  var $content = $('.menu-content');
  function showContent(type) {
    $($content).hide();
    $('#'+type).show();
  }

  $('.menu').on('click', '.menu-btn', function(e) {
    showContent(e.currentTarget.hash.slice(1));
    e.preventDefault();
  });
  showContent('about');
  mainApp.main_fun();
});

(function ($) {
    "use strict";
    var mainApp = {

    main_fun: function () {
        $('#main-menu').metisMenu();

        $(window).bind("load resize", function () {
            if ($(this).width() < 768) {
                $('div.sidebar-collapse').addClass('collapse')
            } else {
                $('div.sidebar-collapse').removeClass('collapse')
            }
        });



    },

    initialization: function () {
        mainApp.main_fun();

    }

}
} (jQuery));

关于javascript - JS 多个 $(document).ready(function() 合并问题 :,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46341033/

相关文章:

javascript - Ember 路由和链接结构

jQuery AJAX 响应拆分

Javascript/html 保留 url 参数

javascript - 如何构建嵌套模型和 View ?

javascript - 无法在nodejs中使用toLocaleString

javascript - 为什么要在 $(function () { ... }) 里面声明?

php - 为什么 FlexySlider 幻灯片没有加载到这个 WordPress 主题中?

Jquery删除样式

javascript - textarea 高度等于 scrollheight 流问题

javascript - 图像未出现在 github 页面上