如何让这个 jQuery 代码在相同的 html 元素上工作?
How to get this jQuery code to work on identical html elements?
我想对所有 div 元素使用单个 jQuery 代码,其中 class 为 TextWrapper
,但我不确定如何去做。 jQuery 代码在两个不同的 div 之间闪烁,字符串为“Text
”和“MoreText
”。但是我使用的代码只适用于第一个元素,而不适用于顺序元素。我只能通过复制 jQuery 代码并编辑 .TextWrapper
标题来让它工作,但是知道有 shorthand 这样做会很乏味和重复。
这是我的 jQuery 代码;第二个函数是第一个函数的副本,除了 .TextWrapper
标题中的更改:
$(function(){
$(".TextWrapper div:gt(0)").hide();
setInterval(function(){
var current = $('.TextWrapper div:visible');
var next = current.next().length ? current.next() : $('.TextWrapper div:eq(0)');
current.fadeOut(500);
next.fadeIn(500);
}, 1000);
});
$(function(){
$(".TextWrapper2 div:gt(0)").hide();
setInterval(function(){
var current = $('.TextWrapper2 div:visible');
var next = current.next().length ? current.next() : $('.TextWrapper2 div:eq(0)');
current.fadeOut(500);
next.fadeIn(500);
}, 1000);
});
如何将此代码缩短为单个 jQuery 代码,以便它可以在我所有的 html 元素上使用相同的代码?我还添加了我的 html 和 css,感谢您的帮助
$(function(){
"use strict";
$(".TextWrapper div:gt(0)").hide();
setInterval(function(){
var current = $('.TextWrapper div:visible');
var next = current.next().length ? current.next() : $('.TextWrapper div:eq(0)');
current.fadeOut(500);
next.fadeIn(500);
}, 1000);
});
.Border {
border: 1px solid black;
display: inline-flex;
height: 110px;
}
.Img {
width: 75px;
height:75px;
}
.TextWrapper {
font-family: Helvetica;
font-size: 13px;
padding: 5px 5px 5px 5px;
position: relative;
text-align: center;
}
.TextWrapper div {
position: absolute;
text-align: center;
left: 0;
right: 0;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<div class="Border">
<div class="ImgAndText">
<img src="#" class="Img">
<div class="TextWrapper">
<div>Text</div>
<div>MoreText</div>
</div>
</div>
</div>
<div class="Border">
<div class="ImgAndText">
<img src="#" class="Img">
<div class="TextWrapper">
<div>Text</div>
<div>MoreText</div>
</div>
</div>
</div>
您可以在一个查询中使用多个 jQuery 选择器:$(".TextWrapper div:gt(0), .TextWrapper div:gt(0)")
试试这个:你是 运行 只有一个 TextWrapper
div 的代码。用户 .each()
将一一考虑所有 TextWrapper
div。见下面代码
$(function(){
"use strict";
$(".TextWrapper div:gt(0)").hide();
setInterval(function(){
$('.TextWrapper').each(function(){
var current = $(this).find('div:visible');
var next = current.next().length ? current.next() : $(this).find('div:first');
current.fadeOut(500);
next.fadeIn(500);
});
}, 1000);
});
.Border {
border: 1px solid black;
display: inline-flex;
height: 110px;
}
.Img {
width: 75px;
height:75px;
}
.TextWrapper {
font-family: Helvetica;
font-size: 13px;
padding: 5px 5px 5px 5px;
position: relative;
text-align: center;
}
.TextWrapper div {
position: absolute;
text-align: center;
left: 0;
right: 0;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<div class="Border">
<div class="ImgAndText">
<img src="#" class="Img">
<div class="TextWrapper">
<div>Text</div>
<div>MoreText</div>
</div>
</div>
</div>
<div class="Border">
<div class="ImgAndText">
<img src="#" class="Img">
<div class="TextWrapper">
<div>Text</div>
<div>MoreText</div>
</div>
</div>
</div>
我想对所有 div 元素使用单个 jQuery 代码,其中 class 为 TextWrapper
,但我不确定如何去做。 jQuery 代码在两个不同的 div 之间闪烁,字符串为“Text
”和“MoreText
”。但是我使用的代码只适用于第一个元素,而不适用于顺序元素。我只能通过复制 jQuery 代码并编辑 .TextWrapper
标题来让它工作,但是知道有 shorthand 这样做会很乏味和重复。
这是我的 jQuery 代码;第二个函数是第一个函数的副本,除了 .TextWrapper
标题中的更改:
$(function(){
$(".TextWrapper div:gt(0)").hide();
setInterval(function(){
var current = $('.TextWrapper div:visible');
var next = current.next().length ? current.next() : $('.TextWrapper div:eq(0)');
current.fadeOut(500);
next.fadeIn(500);
}, 1000);
});
$(function(){
$(".TextWrapper2 div:gt(0)").hide();
setInterval(function(){
var current = $('.TextWrapper2 div:visible');
var next = current.next().length ? current.next() : $('.TextWrapper2 div:eq(0)');
current.fadeOut(500);
next.fadeIn(500);
}, 1000);
});
如何将此代码缩短为单个 jQuery 代码,以便它可以在我所有的 html 元素上使用相同的代码?我还添加了我的 html 和 css,感谢您的帮助
$(function(){
"use strict";
$(".TextWrapper div:gt(0)").hide();
setInterval(function(){
var current = $('.TextWrapper div:visible');
var next = current.next().length ? current.next() : $('.TextWrapper div:eq(0)');
current.fadeOut(500);
next.fadeIn(500);
}, 1000);
});
.Border {
border: 1px solid black;
display: inline-flex;
height: 110px;
}
.Img {
width: 75px;
height:75px;
}
.TextWrapper {
font-family: Helvetica;
font-size: 13px;
padding: 5px 5px 5px 5px;
position: relative;
text-align: center;
}
.TextWrapper div {
position: absolute;
text-align: center;
left: 0;
right: 0;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<div class="Border">
<div class="ImgAndText">
<img src="#" class="Img">
<div class="TextWrapper">
<div>Text</div>
<div>MoreText</div>
</div>
</div>
</div>
<div class="Border">
<div class="ImgAndText">
<img src="#" class="Img">
<div class="TextWrapper">
<div>Text</div>
<div>MoreText</div>
</div>
</div>
</div>
您可以在一个查询中使用多个 jQuery 选择器:$(".TextWrapper div:gt(0), .TextWrapper div:gt(0)")
试试这个:你是 运行 只有一个 TextWrapper
div 的代码。用户 .each()
将一一考虑所有 TextWrapper
div。见下面代码
$(function(){
"use strict";
$(".TextWrapper div:gt(0)").hide();
setInterval(function(){
$('.TextWrapper').each(function(){
var current = $(this).find('div:visible');
var next = current.next().length ? current.next() : $(this).find('div:first');
current.fadeOut(500);
next.fadeIn(500);
});
}, 1000);
});
.Border {
border: 1px solid black;
display: inline-flex;
height: 110px;
}
.Img {
width: 75px;
height:75px;
}
.TextWrapper {
font-family: Helvetica;
font-size: 13px;
padding: 5px 5px 5px 5px;
position: relative;
text-align: center;
}
.TextWrapper div {
position: absolute;
text-align: center;
left: 0;
right: 0;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<div class="Border">
<div class="ImgAndText">
<img src="#" class="Img">
<div class="TextWrapper">
<div>Text</div>
<div>MoreText</div>
</div>
</div>
</div>
<div class="Border">
<div class="ImgAndText">
<img src="#" class="Img">
<div class="TextWrapper">
<div>Text</div>
<div>MoreText</div>
</div>
</div>
</div>