我遇到了jquery加载的问题。
以下功能正在运行。当我使用onclick="load_content('new')"
但如果我从另一个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
答案 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>