我想出了下面的解决方案。它工作得很好,但我很想知道是否有更有效的方法。谢谢!
HTML:
<div id="magic-pane" style="width: 300px; height: 400px; background: #eee; overflow: hidden">
<div id="scroller" style="width: 600px; height: 100%; left: 0px; position: relative">
<div id="pane1" style="width: 300px; height: 100%; background: #efe; float: left">
<span id="pane1-clicker">Whee, click me!</span>
</div>
<div id="pane2" style="width: 300px; height: 100%; background: #fee; float: left">
<span id="pane2-clicker">Whoosh! Click me!</span>
</div>
</div>
</div>
脚本:
$(document).ready(function() {
$('#pane1-clicker').click(function() {
$('#scroller').animate({ left: '-300px' }, 500);
});
$('#pane2-clicker').click(function() {
$('#scroller').animate({ left: '0' }, 500);
});
});
所以基本上,魔术窗格是一个300px宽的小视口。里面是一个两倍宽的滚动条,并排包含两个div。非常简单,但又一次,只是想知道是否有更有效的编码方式。
答案 0 :(得分:1)
当数量最小时,您无需担心任何事情。就像在你的情况下,2是非常易于管理的。注意:您正在为所有窗格编写单独的onClick
函数,这将产生问题。
但是随着数字增长,让我们说50,那么你将不得不编写$('#pane1-clicker')
.... $("#pane50-clicker)
的不同onClick函数,这是非常低效的。您应该修改脚本,以支持任意数量的窗格,而无需编写额外的代码。
left:300px
答案 1 :(得分:0)
从您当前的代码中,我唯一可能立即改变的就是从两个$('#scroller')
处理程序中取出click
到一个闭包中。这样,处理程序不必每次发生点击就选择它。
var $scroller = $('#scroller');
$('#pane1-clicker').click(function() {
$scroller.animate({ left: '-300px' }, 500);
});
$('#pane2-clicker').click(function() {
$scroller.animate({ left: '0' }, 500);
});