有人可以解释一下这个jQuery代码吗?

时间:2009-12-15 19:06:54

标签: jquery image-rotation

  

可能重复:
  Can someone Explain this jQuery code?

我之前发过这个帖子,但我想改进我的问题(我似乎无法在旧帖子中这样做)。

代码是:

$(document).ready(function()
    {
            var rot=$('#image3').rotate({maxAngle:25,minAngle:-55,
            bind:
                    [
                            {"mouseover":function(){rot[0].rotateAnimation(85);}},
                            {"mouseout":function(){rot[0].rotateAnimation(-35);}}
                    ]
            });
    });

它取自这里:http://wilq32.googlepages.com/wilq32.rollimage222,并且还有一个功能演示(动画图像旋转 - 页面上的第3个演示)。

我需要解释的是:

  1. 我知道有一个变量被声明 - “ rot ”,但我似乎无法理解宣言的结束......

  2. 使用变量时,它用作 rot [0] [0] 代表什么?这是一个数组吗?

  3. 我从未见过像这样使用的 bind ,原始语法是

    $(“selector”)。bind(type,[data],fn);

  4. 那是怎么回事?所有的逗号和 [] 是关于什么的?

    1. 我最终想做的是使用此脚本旋转图像“X”,同时点击“Y”元素。如何做到这一点(最好没有“绑定”)?
    2. 谢谢!

4 个答案:

答案 0 :(得分:4)

我认为其他人已经很好地解释了基本的句法问题......

就以下方面而言:

  

我最终想做的是   使用此脚本旋转图像“X”,   而点击“Y”元素。   怎么做(最好是   没有“绑定”)?

试试这个:

var x=$("#imagex"); //<-- image to be rotated
var y=$("#elemy"); //<-- element to be clicked
var angleOfRotation=45; //<-- angle of rotation

y.bind("click",function(){
  x[0].rotateAnimation(angleOfRotation);
});

答案 1 :(得分:2)

声明以2到最后一个分号结束。捕获引用,并在执行传递的回调函数期间稍后使用。

rot是一个jQuery对象,它不是一个数组,但可以像一个索引一样。

rot[0]是第一个匹配选择器#image3的DOM对象,即ID为image3的对象。

在这种情况下,

bind不是函数绑定,而是传递给旋转的选项的一部分。

方括号[foo, bar]表示foo和bar的文字数组。大括号{foo:“foo”,bar:“bar”}是一个具有属性foo和bar的文字对象。

答案 2 :(得分:1)

  1. 声明以第一个分号结束。 rot被赋予rotate()返回的值(在这种情况下,由于jQuery的method chaining syntax而与$('#image3')的结果相同)。 rotate(和下一个)之间的所有内容都只是传递给rotate()的参数。

  2. 是的,[0]是数组访问权限。 rot[0]指的是数组rot中的第一个(“0th”)项。

  3. 此处,{ maxAngle:25, minAngle:-55, bind: ... }是“对象文字”,即具有属性maxAngleminAnglebind的对象的语法。如果您将此对象分配给变量myObject(而不是仅将其作为参数传递给rotate()),则可以访问其属性,如myObject.maxAnglemyObject.minAngle和{{ 1}}。在这种情况下,myObject.bind不是函数,它只是对象上属性的名称。

答案 3 :(得分:0)

好的,丢失的部分 - 这就是你如何使用上面的代码来触发另一个元素的旋转:

var itemYouWannaRotate = $("#imageToRotate").rotate(0);
$("#TriggerElement").click(function(){
    itemYouWannaRotate[0].rotateAnimation(90);
});

谢谢你们,你们的所有答案都是一个很大的帮助。