在 jQuery.animate 中动态传递 DOM 对象

发布于 2024-11-18 14:47:36 字数 512 浏览 1 评论 0原文

我正在使用 jQuery .animate 方法来制作一堆卡片的动画。 假设这些是视觉上显示的四张卡片 [#card1][#card2][#card3][#card4][#card5]

它们的 div 标签 , #card1 , < code>#card2、#card3#card4 存储在数组 cardStack() 中 现在,我想在单击时为每个动画制作动画,当您单击它们时,一个接一个地制作动画。 那么我可以做这样的事情

while(cardStack[0]!="undefined"){
    $('#cardStack[0]').click(function() {    
    $('#cardStack[0]').animate({"left": "+=130px","z-index": "1",queue:false},500);
});
i--;
}

吗?

I am using jQuery .animate method to animate a stack of cards.
Assuming these are the four cards visually displayed [#card1][#card2][#card3][#card4][#card5]

Their div tags , #card1 , #card2, #card3 , #card4 are stored in an array cardStack()
Now i want to animate each of these on click, one after the other when you click them.
So can i do something like

while(cardStack[0]!="undefined"){
    $('#cardStack[0]').click(function() {    
    $('#cardStack[0]').animate({"left": "+=130px","z-index": "1",queue:false},500);
});
i--;
}

is this possible ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

半城柳色半声笛 2024-11-25 14:47:36

我将注释来源,以便您实际上可以学到一些东西:

保存对卡片数组的引用。

var cards = $('#cards div');

第一张翻开的牌将位于我们的数组之外。

var flippedIndex = cards.length;

接下来,我们创建一个数组(与 cards 数组长度相同),其中包含有关翻转哪些卡片的信息。

var flipped = new Array(flippedIndex);

flip 函数可以对卡片进行动画处理并更改卡片的类属性。

var flip = function (card, toggle) {
    card.slideUp(function () {
        card.toggleClass('back', toggle)
            .slideDown();
    });
};

现在我们设置点击监听器。

cards.click(function () {
    var card = $(this),

.index() (http://api.jquery.com/index/) 给出卡片从左到右的位置。

    index = card.index();

查找我们的 flipped 数组以查看卡片是否已翻转,并检查它是否是最后一张翻转的卡片。

if (!flipped[index] && index + 1 === flippedIndex) {
        flippedIndex = index;

在这里我们翻转卡片。

    flip(card, (flipped[index] = true));
} else if (flipped[index] && index === flippedIndex) {
    flippedIndex++;

在这里我们将其展开。

       flip(card, (flipped[index] = false));
    }
});

I'll annotate the source, so that you could actually learn something:

Save the reference to the array of cards.

var cards = $('#cards div');

The first flipped card will be outside our array.

var flippedIndex = cards.length;

Next, we create an array (with the same length as the cards array), containing information on which cards are flipped.

var flipped = new Array(flippedIndex);

The flip function animates and changes the class attribute of a card.

var flip = function (card, toggle) {
    card.slideUp(function () {
        card.toggleClass('back', toggle)
            .slideDown();
    });
};

Now we set the click listener.

cards.click(function () {
    var card = $(this),

.index() (http://api.jquery.com/index/) gives you the position of the card from left to right.

    index = card.index();

Lookup our flipped array to see if the card is flipped and check that it's the last card flipped.

if (!flipped[index] && index + 1 === flippedIndex) {
        flippedIndex = index;

Here we flip the card.

    flip(card, (flipped[index] = true));
} else if (flipped[index] && index === flippedIndex) {
    flippedIndex++;

Here we unflip it.

       flip(card, (flipped[index] = false));
    }
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文