通过滑动排序图像(使用TouchSwipe)

时间:2014-04-17 10:24:27

标签: javascript jquery

我试图让一些照片逐个显示,然后通过滑动进行排序。

一次只能显示一张照片,然后在向左或向右滑动后显示下一张照片。我可以使用TouchSwipe(http://jsfiddle.net/MichelleGlauser/CR329/1)进行滑动,但是一旦我将滑动放入循环中以获取所有图片,滑动和循环都不起作用(http://jsfiddle.net/MichelleGlauser/CR329/4/)。也许我需要以一种我尚未想到的不同方式来解决这个问题。我尝试了几种不同的版本,这就是我现在所做的:

    $(document).ready(function sort_options() {
        var cafe = 'url("http://i1360.photobucket.com/albums/r653/brylans2013/Brylans%20Cafe%20Advertisment/9f34ef72-615e-45e9-a182-ec0c670f63a6_zps7d960dc7.jpg") no-repeat;  background-position: center; background-size: cover;;';
        var buffet = 'url("http://i1037.photobucket.com/albums/a452/drmadvertising/Peninsula%20Papers/Peninsula%20Puzzles/HibachiGrillPuzz.jpg") no-repeat;  background-position: center; background-size: cover;;';
        var fastfood = 'url("http://i242.photobucket.com/albums/ff231/bour3/things%20I%20made%20then%20ate/hamburger.jpg") no-repeat;  background-position: center; background-size: cover;;';

        var options = [cafe, buffet, fastfood];
            for (var i = 0; i < options.length; i++)
                $("#test").attr("background", i);
                    $(function() {          
                        //Keep track of how many swipes
                        var count=0;

                        //Enable swiping...
                        $("#test").swipe( {
                            //Generic swipe handler for all directions
                            swipe:function(event, direction, distance, duration, fingerCount) {
                                if(direction=='left') {
                                    $('#choice').text("Not this one." );    
                                }
                                else if(direction=='right') {
                                    $('#choice').text('Glad you like it.');
                                }
                            },
                            //Default is 75px, set to 0 for demo so any distance triggers swipe
                            threshold:0
                        });
                    });
   });)

如何让此代码正常工作?

1 个答案:

答案 0 :(得分:1)

我找到了一个不同的解决方案,它不涉及循环(不确定它们在哪里),但它只是在滚动时使用一个函数将图像移动到数组中的下一个。基本上将以下代码添加到第一个示例中。

//Stripped CSS Styling leaving only URL
var cafe = 'http://i1360.photobuck...uzz.jpg';
var buffet = 'http://i1477.photobuck...erg.jpg';
var fastfood = 'http://i185.photobuck...grz.jpg';

var options = [cafe, buffet, fastfood];
var selectedoption = 0;

//Programatically set the first image
$('#test').css('background-image', "url('" + options[selectedoption] + "')");

一旦用户滑动,我会增加所选选项(如果它在最后一个选项上返回开始)

        if (selectedoption == options.length) {
            selectedoption = 0;
        } else {
            selectedoption++;
        }

然后在你的if(方向==&#34;左&#34;)代码块之后我添加了更改图像的代码

$('#test').css('background-image', "url('" + options[selectedoption] + "')");

这是一个有效的JSFiddle

我还建议您预先加载图片,因为我相信您会意识到他们需要时间来加载。