3

可能重复:
有人可以解释这个 jQuery 代码吗?

我之前已经发布过这个,但我想完善我的问题(我似乎无法在旧线程中做到这一点)。

代码是:

$(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 ,那里也有一个功能演示(动画图像旋转 - 页面上的第三个演示)。

我需要解释的内容:

  1. 我知道声明了一个变量-“ rot ”,但我似乎无法理解声明的结束位置....

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

  3. 我从未见过这样使用绑定,原始语法是

    $("选择器").bind(类型, [数据], fn );

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

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

谢谢!

4

4 回答 4

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);
});
于 2009-12-15T21:16:17.440 回答
2

声明以倒数第二个分号结束。在执行传递的回调函数期间,该引用被捕获并将在以后使用。

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

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

bind,在这种情况下,不是函数绑定,而是传递给旋转的部分选项。

方括号[foo, bar]表示 foo 和 bar 的文字数组。花括号 { foo: "foo", bar: "bar"} 是具有属性 foo 和 bar 的文字对象。

于 2009-12-15T19:19:15.493 回答
1
  1. 声明以第一个分号结束。rot被分配rotate()返回的值(在这种情况下$('#image3'),由于 jQuery 的方法链接语法,它与 的结果相同)。rotate(和下一个之间的所有内容都)只是传递给rotate().

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

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

于 2009-12-15T19:20:42.977 回答
0

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

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

谢谢大家,你们的所有回答都帮了大忙。

于 2009-12-20T09:57:28.983 回答