加载不工作undefined不是一个功能

时间:2015-07-21 14:30:15

标签: javascript jquery

我遇到了jquery加载的问题。 以下功能正在运行。当我使用onclick="load_content('new')"

直接从html调用它时

但如果我从另一个Javascript函数调用它,它将无法工作。它给了我错误TypeError: undefined is not a function

function load_content(which) {
    $('#content').load('html/' + which + '.html');
}

使用console.log我可以看到函数已输入,因此函数中的第一行必定存在问题。

菜单中的呼叫正在使用以下html

<div class="collapse navbar-collapse" id="main-nav">
    <div class="nav-menu">
        <ul class="nav main-nav">
            <li class="item-101  active"><a class="scroll" href="#New" onclick="load_content('new')"><span>NEUES PROJEKT</span></a></li>
            <li class="item-102"><a class="scroll" href="#Overview" onclick="load_content('overview')"><span>PROJEKTÜBERSICHT</span></a></li>
            <li class="item-103"><a class="scroll" href="#Settings" onclick="load_content('settings')"><span>EINSTELLUNGEN</span></a></li></ul>
        </div>
    </div>
</div>

这里不起作用:

    var dialogNew = function()
    {
        BootstrapDialog.closeAll();
        var fs = require('fs');
        fs.opensync(newPath, 'r');
        load_content('new');
    };
    setTimeout(dialogNew, 2500);

我错过了什么?

虽然它正在使用点击它也显示以下错误 Uncaught TypeError: Cannot read property 'Constructor' of undefined

这里的错误更精确

TypeError: undefined is not a function
    at dialogNew (eval at <anonymous> (file:///Users/proslav/Library/Developer/Xcode/DerivedData/trackingCore-ecxfviftqracjxhimcuhhhvyddso/Build/Products/Debug/trackingCore.app/Contents/Resources/timeBroFront.app/Contents/Resources/app.nw/js/jquery-1.10.2.min.js:3:4994), <anonymous>:37:7)

更新 发现错误。这是以前的代码和我的代码的组合。我必须在调试方面做得更好。答案是重新定位load_content函数并替换fs.opensync

2 个答案:

答案 0 :(得分:1)

我假设,

你在一个js文件中调用该函数,该函数在另一个js文件中。确保在包含定义的js文件之后加载调用j。

答案 1 :(得分:0)

如果你正在使用jQuery,为什么注意这会更优雅呢? 我的意思是通过选择器创建点击处理程序来分离js逻辑 这将更加灵活。

$(function() {
  
  $('.load-content').on('click', function(e){
    e.preventDefault();
    $('#content').load($(this).attr('href'));
    return false;
  });
  
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<a href="html/new.html" class="load-content">new</a>
<a href="html/old.html" class="load-content">old</a>
  
<div id="content"></div>

OR

    $(function() {
      
      $('.load-content').on('click', function(e){
        e.preventDefault();
        $('#content').load($(this).data('url'));
        return false;
      });
      
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

    <a href="" data-url="html/new.html" class="load-content">new</a>
    <a href="" data-url="html/old.html" class="load-content">old</a>
      
    <div id="content"></div>