jquery循环插件、嵌套幻灯片和#x27;在'之后;第一个和最后一个图像的选项或测试

jquery循环插件、嵌套幻灯片和#x27;在'之后;第一个和最后一个图像的选项或测试,jquery,plugins,jquery-plugins,cycle,jquery-cycle,Jquery,Plugins,Jquery Plugins,Cycle,Jquery Cycle,在嵌套幻灯片中,我有“上一页”和“下一页”控件。如果您在第一张幻灯片上,我希望能够降低css的不透明度“prev”,如果您在最后一张幻灯片上,我希望能够降低css的不透明度“next” “after:onAfter”选项本来就足够了,但在我的代码中放置嵌套幻灯片控件时,它似乎不起作用 有没有办法在嵌套幻灯片中正确实现“after”,或者在嵌套幻灯片中测试第一个和最后一个图像?谢谢 这是我的密码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0

在嵌套幻灯片中,我有“上一页”和“下一页”控件。如果您在第一张幻灯片上,我希望能够降低css的不透明度“prev”,如果您在最后一张幻灯片上,我希望能够降低css的不透明度“next”

“after:onAfter”选项本来就足够了,但在我的代码中放置嵌套幻灯片控件时,它似乎不起作用

有没有办法在嵌套幻灯片中正确实现“after”,或者在嵌套幻灯片中测试第一个和最后一个图像?谢谢

这是我的密码

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script>
<script type="text/javascript" src="http://malsup.github.com/jquery.cycle.all.js"></script>
<script type="text/javascript">
$(document).ready(function() {                     
// init and stop the inner slideshows
var inners = $('.inner-slideshow').cycle().cycle('stop');
var slideshow = $('#slideshow').cycle({
    fx:     'fade',
    speed:  'fast',
    timeout: 0,
    pager:  '#nav',
    pagerAnchorBuilder: function(idx, slide) {
        // return sel string for existing anchor
        return '#nav li:eq(' + (idx) + ') a';
    },
    before: function() {
        // stop all inner slideshows
        inners.cycle('stop');
        // start the new slide's slideshow
        $(this).cycle({
            fx: 'scrollHorz',
            speed:  'fast',
            timeout: 0,
            prev: '#prev',
            next: '#next',
            nowrap:  1
        });
    }
});
});
</script>
<title>dev</title>
</head>
<body>
<ul id="nav">
<li><a href="#">Top Slidehsow 1</a></li>
<li><a href="#">Top Slidehsow 2</a></li>
</ul>
<div id="controls">
    <a id="prev" href="#">&lt; Prev</a>
    <a id="next" href="#">Next &gt;</a>
</div>
<div id="slideshow">
    <div class="inner-slideshow">
        <img src="http://cloud.github.com/downloads/malsup/cycle/beach1.jpg" width="200" height="200">
        <img src="http://cloud.github.com/downloads/malsup/cycle/beach2.jpg" width="200" height="200">
    </div>
    <div class="inner-slideshow">
        <img src="http://cloud.github.com/downloads/malsup/cycle/beach4.jpg" width="200" height="200">
        <img src="http://cloud.github.com/downloads/malsup/cycle/beach5.jpg" width="200" height="200">
        <img src="http://cloud.github.com/downloads/malsup/cycle/beach6.jpg" width="200" height="200">
    </div>
</div>
</body>
</html>

$(文档).ready(函数(){
//初始化并停止内部幻灯片放映
var inners=$('.inner slideshow').cycle().cycle('stop');
var slideshow=$('#slideshow')。循环({
外汇:“淡出”,
速度:“快”,
超时:0,
寻呼机:“#导航”,
pagerAnchorBuilder:函数(idx、幻灯片){
//返回现有锚点的sel字符串
返回“#nav li:eq(+(idx)+”)a”;
},
before:function(){
//停止所有内部幻灯片放映
内部循环(“停止”);
//开始新幻灯片的幻灯片放映
美元(本周)({
fx:‘滚动人’,
速度:“快”,
超时:0,
上一页:“#上一页”,
下一个:“#下一个”,
nowrap:1
});
}
});
});
发展

了解您正在使用的插件会很有帮助,但大多数滑块插件都有一个参数,您可以向其中添加函数,每次实际滑动发生时都会调用该参数,比如“onChange”。如果这个插件有这样一个特性,那么您可以使用一些简单的Javascript来直接操作CSS或元素,或者向它们添加一个类来允许您在CSS中操作它们

因此,您需要知道当前的索引—看起来“idx”可能提供了这一点,然后您可以执行类似(伪代码)的操作

其中“currentSlideNumber”是当前索引,slides.length统计幻灯片的数量-在Javascript中为:

$('.inner-slideshow').children('img').length

我想这就是你想要的(编辑了你的例子):

添加了css不透明性和jquery和cycle脚本链接,效果很好


您好,Michael

查看选项页面后的选项:'看起来可以让您将上述代码添加到页面中,有意义吗?嗨,汤姆,谢谢,是的,有意义。我应该更仔细地研究“之后”选项。我没有注意到,除了传递预定义的值,还可以为它编写函数。在玩了各种各样的选项之后(请看小提琴),我无法让你的代码有两个幻灯片并在它们之间切换。嗨,很抱歉,我看了你的链接。我已经将问题中的代码从片段更新到了整个页面,应该可以正常工作。
$('.inner-slideshow').children('img').length
$(document).ready(function() {
    // init and stop the inner slideshows
    var inners = $('.inner-slideshow').cycle().cycle('stop');
    var slideshow = $('#slideshow').cycle({
        fx: 'fade',
        speed: 'fast',
        timeout: 0,
        pager: '#nav',
        pagerAnchorBuilder: function(idx, slide) {
            // return sel string for existing anchor
            return '#nav li:eq(' + (idx) + ') a';
        },
        before: function() {
            // stop all inner slideshows
            inners.cycle('stop');
            // start the new slide's slideshow
            $(this).cycle({
                fx: 'scrollHorz',
                speed: 'fast',
                timeout: 0,
                prev: '#prev',
                next: '#next',
                nowrap: 1,
                after: function() {
                    $('#prev').removeClass('opac');
                    $('#next').removeClass('opac');
                    var countImg = $(this).siblings().size();
                    if ($(this).index() == 0) $('#prev').addClass('opac');
                    if ($(this).index() == countImg) $('#next').addClass('opac');
                }
            });
        }
    });
});