我是JavaScript的新手,我确信这是一个非常简单的修复。
我根据点击的按钮动态更改div内容。这个例子适用于JSFiddle,但是当我把它放在我的PC上时,即使我用$(window).load(function(){ ... })
我的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 type="text/javascript" src="script.js"></script>
</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="#misc" class="menu-btn">Misc</a></li>
</ul>
<div id="about" class="menu-content">About</div>
<div id="contact" class="menu-content">Contact</div>
<div id="misc" class="menu-content">Misc</div>
</body>
</html>
我的JS(script.js):
$(window).load(function(){
var $content = $('.menu-content');
function showContent(type) {
$('div', $content).hide();
$('div[data-menu-content='+type+']').show();
}
$('.menu').on('click', '.menu-btn', function(e) {
showContent(e.currentTarget.hash.slice(1));
e.preventDefault();
});
showContent('about');
});
答案 0 :(得分:4)
$(window).load(function(){ ... })
替换为:
$(document).ready(function(){ ... })
答案 1 :(得分:1)
将您的(window).load
替换为(document).ready
load
,包括图像。当DOM准备好进行交互时会触发ready
。
<强>负载()强>
加载事件在结束时触发 文件加载过程。在这 点,所有的对象 文档在DOM中,而且全部都在 图像和子帧已经完成 负荷。
ready()
虽然JavaScript提供了负载 用于在页面执行代码的事件 渲染,此事件没有得到 触发,直到所有资产如 图像已被完全接收。 在大多数情况下,可以运行脚本 一旦DOM层次结构出现了 完全构造。处理程序通过 到.ready()保证是 在DOM准备好之后执行,所以 这通常是最好的地方 附加所有其他事件处理程序和 运行其他jQuery代码。使用时 依赖于CSS值的脚本 风格属性,这很重要 引用外部样式表或 之前嵌入样式元素 引用脚本。
答案 2 :(得分:0)
试试这个
$(document).ready(function(){
var $content = $('.menu-content');
function showContent(type) {
$('div', $content).hide();
$('div[data-menu-content='+type+']').show();
}
$('.menu').on('click', '.menu-btn', function(e) {
showContent(e.currentTarget.hash.slice(1));
e.preventDefault();
});
showContent('about');
});
答案 3 :(得分:0)
您可以尝试以下解决方案:
function showContent(type) {
$($content).hide();
$('#'+type).show();
}
当我在PC上运行你的代码片段时,我发现Jquery无法根据你在加载时指定的选择器找到div。