您应该使用 Javascript 控制台(例如 Chrome 控制台或 Firefox Firebug)来调试您的代码。
首先,在定义 jQuery 之前放置script
需要 jQuery 的块:
<head>
<script type="text/javascript">
$(function(){
$('#box-container').hide();
});
$(window).load(function() {
$("#box-container").show();
});
</script>
...
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
...
因此,您会看到以下内容(在 Chrome 控制台中):
ReferenceError: $ is not defined
$(function(){
其次,您似乎正在尝试运行一个脚本,该脚本正在访问(在第一个块中)一个元素(#box-container
),然后才在 DOM 本身中看到它。您可以jQuery.ready
在第一个块上使用,但这可能会很混乱。相反,我建议您将其放置在<div id="box-container">
定义之后:
<body ...>
<div id="box-container" ...>
...
</div>
<script type="text/javascript">
(function($){
$('#box-container').hide();
$(window).load(function() {
$("#box-container").show();
});
})(jQuery);
</script>
演示: http: //jsfiddle.net/5JpVB/4(我使用 asetTimeout
来获得戏剧效果。)
<div ...>
或者打开后直接放:
<div id="box-container">
<script type="text/javascript">
(function($){
$('#box-container').hide();
$(window).load(function() {
setTimeout(function(){
$("#box-container").show();
}, 2000);
});
})(jQuery);
</script>
Box Container shown on window.onload.
</div>
http://jsfiddle.net/5JpVB/5/
和致命一击(document.write
尽管如此):
<head>
...
<script>
document.write('<style>#box-container{display: none;}</style>');
</script>
...
</head>
http://jsfiddle.net/5JpVB/2/
是的,这是一个将样式“放入”标题中的脚本display: none
,它“巧妙地”绕过了一些被抛出的猜想(每种方法或多或少都有缺点)。这种方法有一个优雅的地方(当然,除了 using document.write
,这很糟糕)。
还有另一种方式,使用 CSSdisplay: none
方法:
<head>
...
<style>
#box-container {
display: none;
}
</style>
...
<div id="box-container">
<noscript><style>#box-container{display: block;}</style></noscript>
Box Container shown on window.onload.
</div>
http://jsfiddle.net/5JpVB/3/(只是结果页面,禁用 Javascript 以查看它的工作。)