繁体   English   中英

jQuery的画廊/旋转木马奇数

[英]jquery gallery / carousel oddity

我有一个图像查看器,结合了缩略图/大图像块,效果很好...

看起来像这样:

<div id="gallery-large" ><img id="largeImage" src="" /></div>
<div id="gallery-scroller" >
    <ul class="holder">
    <li class="slide first"><img src="galleries/kids/01.jpg" data-large="galleries/kids/06.jpg" alt="1st image description" /></li>
    <li class="slide"><img src="galleries/kids/02.jpg" data-large="galleries/kids/07.jpg" alt="2nd image description" /></li>
    <li class="slide"><img src="galleries/kids/03.jpg" data-large="galleries/kids/08.jpg" alt="3rd image description" /></li>
    <li class="slide"><img src="galleries/kids/04.jpg" data-large="galleries/kids/09.jpg" alt="4th image description" /></li>
    <li class="slide"><img src="galleries/kids/05.jpg" data-large="galleries/kids/10.jpg" alt="5th image description" /></li>
</ul>
<div class="clear"></div>
</div>
<script>
$('.holder').delegate('img','click', function(){
$('#largeImage').attr( 'src',$(this).attr('data-large') );
});
</script>

但是,当我尝试将其与旋转木马结合使用时(我在这里找到的最简单的旋转木马-http: //www.flintstudio.biz/stuff/sliders/1.html

它停止工作了...

代码看起来像这样

<div id="gallery-large" ><img id="largeImage" src="" /></div>
<div id="gallery-scroller" >
    <a class="button prev" ><img src="images/arrow_left.png"/></a>
    <a class="button next" ><img src="images/arrow_right.png"/></a>
        <ul class="holder">
            <li class="slide first"></li>
            <li class="slide"></li>
            <li class="slide"></li>
            <li class="slide"></li>
            <li class="slide"></li>
        </ul>
    <div class="clear"></div>
</div>  

<script>
$( window ).load(function(){
    var images = ['galleries/kids/01.jpg', 'galleries/kids/02.jpg', 'galleries/kids/03.jpg', 'galleries/kids/04.jpg', 'galleries/kids/05.jpg'];     

    $.preloadImages( images, init );

    function init() {
        $( '#gallery-scroller' ).imgSlider( images );
    }

$('.holder').delegate('img','click', function(){
    $('#largeImage').attr( 'src',$(this).attr('data-large') );
});
});
</script>

从概念的角度来看,唯一的区别是在窗口加载后填充了列表-我尝试更改

.delegate('img','click', function(){

.on( 'click', 'img', finction(){ 

但这没有帮助。

哦-要点-我在carousel.js中更改了一行-因此它不是在做背景图像CSS更改,而是添加图像...

所以我改变了这一点(第37行)

$( e ).find( '.holder > li' ).eq( i ).css( 'background', 'url('+images[i]+') no-repeat' );

$( e ).find( '.holder > li' ).eq( i ).html( '<img class="thumb" src="' + images[i] + '" />' );

我在想什么... ???

简单缩略图查看器的jsfiddle ... http://jsfiddle.net/cBpvZ/

轮播版本的jsfiddle ... http://jsfiddle.net/ZJzLd/

我认为您将事件绑定在错误的DOM对象上,因此应该使用LI而不是IMG。 您可以使用Firebug检查HTML,并且可以看到UL.holder中没有IMG标签。 请尝试以下代码。

$('.holder').delegate('li','click', function(){
    var imgSrc = $(this).css('background-image').replace('url("','').replace('")','');
    $('#largeImage').attr( 'src',imgSrc);
});

理想情况下,我应该使用RegExp来替换字符串,但是这可行。

马赫什

森林穿过树木……我看不到它,因为我花了很多时间……缺少有关数据大的引用确实是问题所在。

该解决方案(由我定义)具有两个数组-一个用于拇指,一个用于大数组。(我可以选择在图像名称后添加一些后缀或前缀,并保持它们的相关性的路径-但我选择不-因此需要灵活的命名方式...这需要两个数组)

var images = ['galleries/kids/01.jpg', 'galleries/kids/02.jpg', 'galleries/kids/03.jpg', 'galleries/kids/04.jpg', 'galleries/kids/05.jpg'];
var large = ['galleries/kids/06.jpg', 'galleries/kids/07.jpg', 'galleries/kids/08.jpg', 'galleries/kids/09.jpg', 'galleries/kids/10.jpg'];

$('#gallery-scroller').append('<img src="images/loader.gif" id="gallery-loader" style="position:absolute; top:45%; left:45%;"/>');

$.preloadImages( images, init );

function init() {
$( '#gallery-loader' ).remove();
$( '#gallery-scroller' ).imgSlider( images, large );
}

当然,这意味着更改carousel.js以处理其他传递的数组-那里没有问题...

奇迹般有效。 现在,我可以在其中填充数据,然后将轮播放置在我需要的任何位置,并将大图像查看器放置在我需要的位置...太棒了-感谢您的协助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM