从 $('.class').appendTo() 访问相应的 parent object
Access respective parent object from $('.class').appendTo()
我正在尝试根据 类 改编我 found here 的一些幻灯片代码以使其可重复使用。第一个幻灯片切换一次,但没有其他变化。我假设这是由于使用了 $(this).parent()
。如果是这样,我将如何正确访问相应的 parent ?如果不是,那是怎么回事?
编辑:明确地说,两个框的内容应该独立更改!
$('.widget-slide:first').show();
setInterval(function() {
$('.widget-slide:first')
.fadeOut(1000)
.next()
.fadeIn(1000)
.end()
.appendTo($(this).parent());
}, 2000);
.widget-slideshow {
position: relative;
width: 50px;
height: 50px;
border: 1px solid blue;
}
.widget-slide:not(:first-child){
display: none;
}
.widget-slide {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
font-size: 20px;
line-height: 50px;
text-align: center;
overflow: hidden;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="widget-slideshow">
<div class="widget-slide">
1
</div>
<div class="widget-slide">
2
</div>
<div class="widget-slide">
3
</div>
<div class="widget-slide">
4
</div>
</div>
<div class="widget-slideshow">
<div class="widget-slide">
A
</div>
<div class="widget-slide">
B
</div>
<div class="widget-slide">
C
</div>
<div class="widget-slide">
D
</div>
</div>
如果你想让你的代码可重用,你必须使用 each()
函数,这样它会在你添加并使它们成为匹配滑块时循环遍历 fiddle in/out :
$(".widget-slideshow").find('.widget-slide:first').each(function() {
$(this).fadeOut(1000)
.next()
.fadeIn(1000)
.end()
.appendTo($(this).parent());
});
工作代码段
$('.widget-slide:first').show();
setInterval(function() {
$(".widget-slideshow").find('.widget-slide:first').each(function() {
$(this).fadeOut(1000)
.next()
.fadeIn(1000)
.end()
.appendTo($(this).parent());
});
}, 3000);
.widget-slideshow {
position: relative;
width: 50px;
height: 50px;
border: 1px solid blue;
}
.widget-slide:not(:first-child) {
display: none;
}
.widget-slide {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
font-size: 20px;
line-height: 50px;
text-align: center;
overflow: hidden;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="widget-slideshow">
<div class="widget-slide">
1
</div>
<div class="widget-slide">
2
</div>
<div class="widget-slide">
3
</div>
<div class="widget-slide">
4
</div>
</div>
<div class="widget-slideshow">
<div class="widget-slide">
1
</div>
<div class="widget-slide">
2
</div>
<div class="widget-slide">
3
</div>
<div class="widget-slide">
4
</div>
</div>
虽然从技术上讲它没有回答我的问题,但效果很好。
$('.widget-slide:first').show();
setInterval(function() {
$('.widget-slideshow').each(function(i) {
$(this).find('.widget-slide:first')
.fadeOut(1000)
.next()
.fadeIn(1000)
.end()
.appendTo($(this));
})
}, 2000);
.widget-slideshow {
position: relative;
width: 50px;
height: 50px;
border: 1px solid blue;
}
.widget-slide:not(:first-child){
display: none;
}
.widget-slide {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
font-size: 20px;
line-height: 50px;
text-align: center;
overflow: hidden;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="widget-slideshow">
<div class="widget-slide">
1
</div>
<div class="widget-slide">
2
</div>
<div class="widget-slide">
3
</div>
<div class="widget-slide">
4
</div>
</div>
<div class="widget-slideshow">
<div class="widget-slide">
A
</div>
<div class="widget-slide">
B
</div>
<div class="widget-slide">
C
</div>
<div class="widget-slide">
D
</div>
</div>
我正在尝试根据 类 改编我 found here 的一些幻灯片代码以使其可重复使用。第一个幻灯片切换一次,但没有其他变化。我假设这是由于使用了 $(this).parent()
。如果是这样,我将如何正确访问相应的 parent ?如果不是,那是怎么回事?
编辑:明确地说,两个框的内容应该独立更改!
$('.widget-slide:first').show();
setInterval(function() {
$('.widget-slide:first')
.fadeOut(1000)
.next()
.fadeIn(1000)
.end()
.appendTo($(this).parent());
}, 2000);
.widget-slideshow {
position: relative;
width: 50px;
height: 50px;
border: 1px solid blue;
}
.widget-slide:not(:first-child){
display: none;
}
.widget-slide {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
font-size: 20px;
line-height: 50px;
text-align: center;
overflow: hidden;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="widget-slideshow">
<div class="widget-slide">
1
</div>
<div class="widget-slide">
2
</div>
<div class="widget-slide">
3
</div>
<div class="widget-slide">
4
</div>
</div>
<div class="widget-slideshow">
<div class="widget-slide">
A
</div>
<div class="widget-slide">
B
</div>
<div class="widget-slide">
C
</div>
<div class="widget-slide">
D
</div>
</div>
如果你想让你的代码可重用,你必须使用 each()
函数,这样它会在你添加并使它们成为匹配滑块时循环遍历 fiddle in/out :
$(".widget-slideshow").find('.widget-slide:first').each(function() {
$(this).fadeOut(1000)
.next()
.fadeIn(1000)
.end()
.appendTo($(this).parent());
});
工作代码段
$('.widget-slide:first').show();
setInterval(function() {
$(".widget-slideshow").find('.widget-slide:first').each(function() {
$(this).fadeOut(1000)
.next()
.fadeIn(1000)
.end()
.appendTo($(this).parent());
});
}, 3000);
.widget-slideshow {
position: relative;
width: 50px;
height: 50px;
border: 1px solid blue;
}
.widget-slide:not(:first-child) {
display: none;
}
.widget-slide {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
font-size: 20px;
line-height: 50px;
text-align: center;
overflow: hidden;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="widget-slideshow">
<div class="widget-slide">
1
</div>
<div class="widget-slide">
2
</div>
<div class="widget-slide">
3
</div>
<div class="widget-slide">
4
</div>
</div>
<div class="widget-slideshow">
<div class="widget-slide">
1
</div>
<div class="widget-slide">
2
</div>
<div class="widget-slide">
3
</div>
<div class="widget-slide">
4
</div>
</div>
虽然从技术上讲它没有回答我的问题,但效果很好。
$('.widget-slide:first').show();
setInterval(function() {
$('.widget-slideshow').each(function(i) {
$(this).find('.widget-slide:first')
.fadeOut(1000)
.next()
.fadeIn(1000)
.end()
.appendTo($(this));
})
}, 2000);
.widget-slideshow {
position: relative;
width: 50px;
height: 50px;
border: 1px solid blue;
}
.widget-slide:not(:first-child){
display: none;
}
.widget-slide {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
font-size: 20px;
line-height: 50px;
text-align: center;
overflow: hidden;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="widget-slideshow">
<div class="widget-slide">
1
</div>
<div class="widget-slide">
2
</div>
<div class="widget-slide">
3
</div>
<div class="widget-slide">
4
</div>
</div>
<div class="widget-slideshow">
<div class="widget-slide">
A
</div>
<div class="widget-slide">
B
</div>
<div class="widget-slide">
C
</div>
<div class="widget-slide">
D
</div>
</div>