我正在尝试为我的音乐创建一个CD封面组合。
目前,我的作品集页面在初始页面加载时加载了我相册中的所有内容。内容包含在隐藏的div中。
当你点击一个相册时,内容会向下滚动,并在再次点击时关闭,使用.slideToggle()
。参见网站here
我关心的是,我希望页面加载速度更快,只有内容时,呼吁。
任何帮助将不胜感激。
我设计了一个测试场景:
<!doctype html>
<html>
<title>jQuery external load test</title>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script>
<style type="text/css">
#container {
width: 80%;
margin: 0 auto;
margin-top:;
}
.albumThumb {
float: left;
position: relative;
margin: 5px;
height: 150px;
width: 150px;
background-color: purple;
}
.albumThumb:hover {
opacity: 0.8;
filter:alpha(opacity=80);
}
.albumContent {
display: none;
width: 100%;
float: left;
position: relative;
padding: 20px;
color: #333;
background-color: #eee;
border: 1px solid #ddd;
}
</style>
</head>
<body>
<div id="container">
<!-- Album #1 -->
<div class="albumThumb"></div>
<div class="albumContent"></div>
<script type="text/javascript">
$(document).ready(function() {
$('.albumThumb').click(function() {
// Name content variable
var album = 'album-page';
var url = 'http://mysite.com/' + album + ' #project-info';
var content = $(this).nextAll('.albumContent:first');
// Load/Unload div content
if (content.is(':visible')) {
content.slideUp(500);
content.html('');
} else {
content.text('Loading...', function() {
content.load(url).content.slideDown(500);
});
}
});
});
</script>
<!-- Album #2 -->
<div class="albumThumb"></div>
<div class="albumContent"></div>
<script type="text/javascript">
$(document).ready(function() {
$('.albumThumb').click(function() {
// Name content variable
var album = 'album-page';
var url = 'http://mysite.com/' + album + ' #project-info';
var content = $(this).nextAll('.albumContent:first');
// Load/Unload div content
if (content.is(':visible')) {
content.slideUp(500);
content.html('');
} else {
content.text('Loading...', function() {
content.load(url).content.slideDown(500);
});
}
});
});
</script>
</div>
<!-- End Container -->
</body>
</html>
2条答案
按热度按时间x6492ojm1#
这个网站真的很慢!这可能是因为代码重复和您分配的事件数量。我们可以压缩代码,然后使用
on
委托减少事件的数量。在使用它之前,你需要更新你的jQuery(你目前使用的是1.3,你需要至少 * 1.7(这是
on
被添加的时候))。试试这个:
8i9zcol22#
我找到解决办法了这确实花了不少时间,mattytommo的回答让我走上了正确的道路。再次感谢马蒂。
我最终编写了一个函数(),并使用onClick事件将变量名称更改从html传递到jQuery函数,这是新脚本:
我在if/else语句中使用了.hasClass()、addClass()和.removeClass(),就好像在说:“如果我点击的相册已经选择了class .,那么它的内容必须是打开的并且可见的。因此,删除.selected类并关闭所单击的divAlbumThumb后面的div.albumContent。否则,如果我单击的相册没有.selected类,则它一定无法打开。因此,将class .selected添加到我单击的相册中,并打开下面的albumContent div。”
接下来,我简化了html,使用它将外部相册内容(html)传递给所选的div.albumThumb后面的div.albumContent:
album-1和album-2现在在“var album ='';”的JavaScript函数中。