按 jquery 顺序切换轮播中的图像
Toggle images in a carousel in sequence with jquery
我有以下 HTML 代码:
<a class="item overlay"><img src="img/1.jpg"></a>
<a class="item overlay"><img src="img/2.jpg"></a>
<a class="item overlay"><img src="img/3.jpg"></a>
<a class="item overlay"><img src="img/4.jpg"></a>
<a class="item overlay"><img src="img/5.jpg"></a>
和JS代码:
$('.overlay > img').on('click', function(event){
var $this = $(this);
if($this.hasClass('clicked')){
$this.attr("src","img/1-overlay.jpg").removeClass('clicked');
} else{
$this.attr("src","img/1.jpg").addClass('clicked');
}
这仅适用于单个图像,但我想对轮播中的所有图像执行相同的操作,而无需重复上面相同的 JS 代码。
你有什么建议?
如果给每张图片添加一个属性会怎样
<a class="item overlay"><img data-num="1" src="img/1.jpg"></a>
<a class="item overlay"><img data-num="2" src="img/2.jpg"></a>
<a class="item overlay"><img data-num="3" src="img/3.jpg"></a>
<a class="item overlay"><img data-num="4" src="img/4.jpg"></a>
<a class="item overlay"><img data-num="5" src="img/5.jpg"></a>
然后在js中,获取数字,用来补文件名
$('.overlay > img').on('click', function(event){
var $this = $(this);
var num = $this.attr("data-num");
if($this.hasClass('clicked')){
$this.attr("src","img/"+num+"-overlay.jpg").removeClass('clicked');
} else{
$this.attr("src","img/"+num+".jpg").addClass('clicked');
}
我决定更改 JS,响应为 "jarchuleta",但我必须在图像上单击两次才能看到更改。
可以解析为:
$('.overlay > img').on('click', function(event){
var $this = $(this);
var num = $this.attr("data-num");
var clickist = $this.attr("src");
var confirmed = "img/"+num+".jpg";
if(clickist === confirmed){
$this.attr("src","img/"+num+"-overlay.jpg");
} else{
$this.attr("src","img/"+num+".jpg");
}
完美运行。
我有以下 HTML 代码:
<a class="item overlay"><img src="img/1.jpg"></a>
<a class="item overlay"><img src="img/2.jpg"></a>
<a class="item overlay"><img src="img/3.jpg"></a>
<a class="item overlay"><img src="img/4.jpg"></a>
<a class="item overlay"><img src="img/5.jpg"></a>
和JS代码:
$('.overlay > img').on('click', function(event){
var $this = $(this);
if($this.hasClass('clicked')){
$this.attr("src","img/1-overlay.jpg").removeClass('clicked');
} else{
$this.attr("src","img/1.jpg").addClass('clicked');
}
这仅适用于单个图像,但我想对轮播中的所有图像执行相同的操作,而无需重复上面相同的 JS 代码。
你有什么建议?
如果给每张图片添加一个属性会怎样
<a class="item overlay"><img data-num="1" src="img/1.jpg"></a>
<a class="item overlay"><img data-num="2" src="img/2.jpg"></a>
<a class="item overlay"><img data-num="3" src="img/3.jpg"></a>
<a class="item overlay"><img data-num="4" src="img/4.jpg"></a>
<a class="item overlay"><img data-num="5" src="img/5.jpg"></a>
然后在js中,获取数字,用来补文件名
$('.overlay > img').on('click', function(event){
var $this = $(this);
var num = $this.attr("data-num");
if($this.hasClass('clicked')){
$this.attr("src","img/"+num+"-overlay.jpg").removeClass('clicked');
} else{
$this.attr("src","img/"+num+".jpg").addClass('clicked');
}
我决定更改 JS,响应为 "jarchuleta",但我必须在图像上单击两次才能看到更改。
可以解析为:
$('.overlay > img').on('click', function(event){
var $this = $(this);
var num = $this.attr("data-num");
var clickist = $this.attr("src");
var confirmed = "img/"+num+".jpg";
if(clickist === confirmed){
$this.attr("src","img/"+num+"-overlay.jpg");
} else{
$this.attr("src","img/"+num+".jpg");
}
完美运行。