2

我正在尝试为一组图像设置动画,以在第一次单击时单独向右移动 300 像素,再次单击时向左移动 300 像素回到起始位置。

我现在拥有的东西不起作用。所以要么是 A)我的语法有问题,要么是 B)我的图像实际上没有以 5px 渲染。

编辑:这个小提琴现在用正确的代码更新

Jsfiddle 演示

<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
    <style type="text/css">
        #wrapper {
            width: 80em;
        }

        .image {
            width: 10em;
            height: 10em;   
            display: block;
            position: relative;
            left:5px;
        }
    </style>

    <script type="text/javascript">
    $(document).ready(function() {
        $(".image").click(function() {
            if ($('this').css('left') =='5px') {                    
                $(".image").animate({"right": "300px"},3000);
            else
                $(".image").animate({"left": "300px"},3000);    
            }
        });     
    });     
    </script>
</head>
<body>
    <div id="wrapper">
        <section id="gallery">          
            <img id="avery" class="image" src='images/OAI.jpg' alt= "On Avery Island Album Art">
            <img id="overthesea" class="image" src='images/ITAOTS.jpg' alt="In the Aeroplane Over the Sea album art">   
            <img id="beauty" class="image" src='images/beauty.jpg' alt="Beauty Demo Album Art">
            <img id="everthingIs" class="image" src='images/everythingis.jpg' alt="Eveything Is EP Album Art">
        </section>
    </div>  
</body> 
</html>                 
4

2 回答 2

1

尝试这个:

$(document).ready(function () {
    $(".image").click(function () {
        var th = $(this);
        if ($(th).css('left') == '5px') {
            console.log("ret");
            $(th).animate({
                "left": "300px"
            }, 3000);
        } else {
            console.log("sdffsdsff");
            $(th).animate({
                "left": "5px"
            }, 3000);
        }
    });
});

在这里拉小提琴。

于 2013-11-04T08:17:27.837 回答
1

您必须更改$('this')for $(this),元素this始终不带引号。

问候。

于 2013-11-04T08:25:14.533 回答