jQuery显示/隐藏重复舞蹈
我有一个带有寻呼机的jQuery循环,它创建一个无序列表,当单击时,会更改幻灯片。我试图使用无序列表来显示/隐藏每个幻灯片的相关文本。而且,为了使过程进一步复杂化,当没有与幻灯片相关联的文本时,有一组默认文本 html如下所示:jQuery显示/隐藏重复舞蹈,jquery,Jquery,我有一个带有寻呼机的jQuery循环,它创建一个无序列表,当单击时,会更改幻灯片。我试图使用无序列表来显示/隐藏每个幻灯片的相关文本。而且,为了使过程进一步复杂化,当没有与幻灯片相关联的文本时,有一组默认文本 html如下所示: <div class="slideshow"> <img src="img1.png" /> <img src="img2.png" /> <img src="img3.png" /> </div>
<div class="slideshow">
<img src="img1.png" />
<img src="img2.png" />
<img src="img3.png" />
</div>
<div class="slidetxt slide-3-text" style="display:none;">Text to appear with slide 3</div>
<div class="slidetxt slide-1-text">Text to appear with slide 1</div>
<div class="slidetxt defaultcontent" style="display:none;">This is the default text for the page.</div>
jQuery(document).ready(function() {
jQuery('.slideshow')
.after('<ul id="slidenav" />')
.cycle({
fx: 'fade',
timeout: 0,
pager: '#slidenav',
pagerAnchorBuilder: function(idx, slide) {
return '<li><a href="#"></a></li>';
}
});
jQuery('#slidenav li a').click(function(){
var index = jQuery(this).parent('li').index();
index = index + 1;
var slidetxt = ".slide-"+index+"-text";
jQuery(".slidetxt").hide("slow", function(){
if(jQuery(slidetxt).length){
jQuery(slidetxt).show("slow");
}else{
jQuery(".defaultcontent").show("slow");
}
});
});
});
jQuery(document).ready(function() {
$slidetxt = jQuery(".slidetxt");
$defaultcontent = jQuery(".defaultcontent");
jQuery('.slideshow').after('<ul id="slidenav" />').cycle({
fx: 'fade',
timeout: 0,
pager: '#slidenav',
pagerAnchorBuilder: function(idx, slide) {
return '<li><a href="#">' + (idx + 1) + '</a></li>';
},
before: function() {
$slidetxt.hide("slow");
},
after: function(currSlideElement, nextSlideElement) {
var index = 1 + jQuery(nextSlideElement).index();
var $s = jQuery(".slide-" + index + "-text");
jQuery.when($slidetxt.hide("slow")).done(function() {
if ($s.length) {
$s.show("slow");
}
else {
$defaultcontent.show("slow");
}
});
}
});
});
要与幻灯片3一起显示的文本
要与幻灯片1一起显示的文本
这是页面的默认文本。
jQuery如下所示:
<div class="slideshow">
<img src="img1.png" />
<img src="img2.png" />
<img src="img3.png" />
</div>
<div class="slidetxt slide-3-text" style="display:none;">Text to appear with slide 3</div>
<div class="slidetxt slide-1-text">Text to appear with slide 1</div>
<div class="slidetxt defaultcontent" style="display:none;">This is the default text for the page.</div>
jQuery(document).ready(function() {
jQuery('.slideshow')
.after('<ul id="slidenav" />')
.cycle({
fx: 'fade',
timeout: 0,
pager: '#slidenav',
pagerAnchorBuilder: function(idx, slide) {
return '<li><a href="#"></a></li>';
}
});
jQuery('#slidenav li a').click(function(){
var index = jQuery(this).parent('li').index();
index = index + 1;
var slidetxt = ".slide-"+index+"-text";
jQuery(".slidetxt").hide("slow", function(){
if(jQuery(slidetxt).length){
jQuery(slidetxt).show("slow");
}else{
jQuery(".defaultcontent").show("slow");
}
});
});
});
jQuery(document).ready(function() {
$slidetxt = jQuery(".slidetxt");
$defaultcontent = jQuery(".defaultcontent");
jQuery('.slideshow').after('<ul id="slidenav" />').cycle({
fx: 'fade',
timeout: 0,
pager: '#slidenav',
pagerAnchorBuilder: function(idx, slide) {
return '<li><a href="#">' + (idx + 1) + '</a></li>';
},
before: function() {
$slidetxt.hide("slow");
},
after: function(currSlideElement, nextSlideElement) {
var index = 1 + jQuery(nextSlideElement).index();
var $s = jQuery(".slide-" + index + "-text");
jQuery.when($slidetxt.hide("slow")).done(function() {
if ($s.length) {
$s.show("slow");
}
else {
$defaultcontent.show("slow");
}
});
}
});
});
jQuery(文档).ready(函数(){
jQuery(“.slideshow”)
。之后(“
出于某种原因,单击第三个导航按钮总是可以正常工作,但单击第二个按钮总是显示默认文本,然后立即隐藏它,然后再次显示,单击第一个导航按钮有时工作正常,有时进行显示/隐藏/显示舞蹈
我猜这与jQuery认为它在真正完成操作之前就完成了操作有关,但可能只是我的代码太草率了!:-)我们将非常感谢您的帮助!!谢谢。该舞蹈是由隐藏回调在每个
.slideText
元素中运行一次引起的
这可以通过使用jQuery.when(jQuery('.slidetxt').hide('slow').done(function(){…})
来克服,它在所有隐藏完成后运行回调一次
您还可以利用Cycle的之前和之后的选项,而不是在导航链接上附加一个额外的点击处理程序
整个过程是对原始代码的一个相当轻的修改,如下所示:
<div class="slideshow">
<img src="img1.png" />
<img src="img2.png" />
<img src="img3.png" />
</div>
<div class="slidetxt slide-3-text" style="display:none;">Text to appear with slide 3</div>
<div class="slidetxt slide-1-text">Text to appear with slide 1</div>
<div class="slidetxt defaultcontent" style="display:none;">This is the default text for the page.</div>
jQuery(document).ready(function() {
jQuery('.slideshow')
.after('<ul id="slidenav" />')
.cycle({
fx: 'fade',
timeout: 0,
pager: '#slidenav',
pagerAnchorBuilder: function(idx, slide) {
return '<li><a href="#"></a></li>';
}
});
jQuery('#slidenav li a').click(function(){
var index = jQuery(this).parent('li').index();
index = index + 1;
var slidetxt = ".slide-"+index+"-text";
jQuery(".slidetxt").hide("slow", function(){
if(jQuery(slidetxt).length){
jQuery(slidetxt).show("slow");
}else{
jQuery(".defaultcontent").show("slow");
}
});
});
});
jQuery(document).ready(function() {
$slidetxt = jQuery(".slidetxt");
$defaultcontent = jQuery(".defaultcontent");
jQuery('.slideshow').after('<ul id="slidenav" />').cycle({
fx: 'fade',
timeout: 0,
pager: '#slidenav',
pagerAnchorBuilder: function(idx, slide) {
return '<li><a href="#">' + (idx + 1) + '</a></li>';
},
before: function() {
$slidetxt.hide("slow");
},
after: function(currSlideElement, nextSlideElement) {
var index = 1 + jQuery(nextSlideElement).index();
var $s = jQuery(".slide-" + index + "-text");
jQuery.when($slidetxt.hide("slow")).done(function() {
if ($s.length) {
$s.show("slow");
}
else {
$defaultcontent.show("slow");
}
});
}
});
});
jQuery(文档).ready(函数(){
$slidetxt=jQuery(“.slidetxt”);
$defaultcontent=jQuery(“.defaultcontent”);
jQuery('.slideshow')。之后('
请看“工作”太棒了!非常感谢。这就像一个绝对的梦想。感谢你花时间帮助我解决这个问题!不用担心@user1320529。知道这一点太好了。页面上的某个地方有一个链接/按钮,你可以指定我的答案为已接受。Muchas',in advanceAh,是的,谢谢,我找到了它!我花了一些时间请仔细阅读您的代码,并感谢您不仅解决了我的问题,而且还以优雅的方式解决了我的问题,并帮助我从过程中学习。这超出了我的要求,我非常感激!