gpt4 book ai didi

javascript - jQuery 幻灯片的优化

转载 作者:行者123 更新时间:2023-11-30 05:54:49 25 4
gpt4 key购买 nike

下面的代码用于幻灯片放映。我想优化这段代码并想联系 SO 尝试获得一些帮助。我知道我正在使用的这些选择器正在工作,但我很好奇是否有更有效的方式来编写我的画廊。我经常写这些相同的情况,想知道其他人是否觉得我做得对。

我只是在寻找关于格式化、优化我的 JS 性能以及 DRY 代码方法的总体建议。了解其他人如何编写类似代码有助于我磨练自己的技能。

标记

  <a id="next">next</a><a id="prev">prev</a>
<ul id="thumbnails">
<li><a href="/path/to/src"><img src="50x50.jpg"></a></li>
<li><a href="/path/to/src"><img src="50x50.jpg"></a></li>
<li><a href="/path/to/src"><img src="50x50.jpg"></a></li>
</ul>
<img id="main-image" src="path/to/src">

JS

$("#thumbnails a").click(function(e){      
e.preventDefault();

var $this = $(this),
thesrc = $this.attr('href'),
desc = $this.attr('alt');

$this.addClass('current');
$this.parent().siblings().children('a').removeClass('current');

$("#main-image").fadeOut(400, function(){
$('<img/>').attr('src', thesrc).load(function(){
$("#main-image").attr('src', this.src).fadeIn(400);
$("#caption").text(desc);
});
});
});

$("#next").click(function(e){
e.preventDefault();
$('.current').parent().next().children('a').trigger('click');
});

$("#prev").click(function(e){
e.preventDefault();
$('.current').parent().prev().children('a').trigger('click');
});

最佳答案

jsBin demo

HTML:

  <p>
<a id="prev">prev</a>
<a id="next">next</a>
</p>

<div id="thumbnails">
<img src="1.jpg">
<img src="2.jpg">
<img src="3.jpg">
</div>

<div id="main-img-container">
<div id="main-img"></div>
</div>

基本 CSS:

#thumbnails img{
height:30px;
}
div#main-img-container{
height:200px;
background: #eee url(loading_transparent.gif) no-repeat center center;
}
div#main-img{
width:100%;
height:100%;
background: transparent no-repeat center center;
background-size:cover;
}
#next, #prev{
cursor:pointer;
background:#eee;
padding:4px 10px;
-webkit-border-radius:5px;
border-radius:5px;
}

jQuery:

var $imgs = $('#thumbnails img');
var imgsN = $imgs.length;
var $main = $('#main-img');
var c = 0; // a 'current' counter

function loadImage(){
c= c===-1? c=imgsN-1 : c%imgsN;
var getSrc = $imgs.eq(c).attr('src');
$main.stop().fadeTo(200, 0.7, function(){ // just to make loading a bit visible :)
$('<img>').attr('src', getSrc).load(function(){
$main.css({backgroundImage: 'url('+ this.src +')'}).fadeTo(300,1);
});
});
}
loadImage(); // first kick! :)

$imgs.click(function(){
c = $(this).index();
loadImage();
});

$('#prev, #next').click(function(){
var myID = this.id=='next' ? c++ : c--;
loadImage();
});

关于javascript - jQuery 幻灯片的优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12572760/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com