jQuery queue()的例子

下面是针对“jQuery queue()的例子”的详细攻略。

什么是jQuery queue()方法?

在jQuery中,queue()方法用于将一组函数按照顺序添加到当前匹配元素的队列中,并在之后按照队列中函数的顺序依次执行它们。该方法非常适合用于实现动画效果或事件队列。

queue()方法的基本用法

语法

$(selector).queue([queueName],function(next));

参数说明

  • queueName:可选参数,表示队列的名称,如果不指定,则默认为"fx"。同时,如果我们想要同时执行多个队列,可以指定不同的队列名称。队列名称必须是字符串类型。
  • function:必选参数,表示需要添加到队列中的函数,该函数必须接受next参数,以便在队列中的下一个函数执行完成后,执行该函数。

下面是一个简单的示例,展示如何使用queue()方法:

//队列中添加2个函数,用于依次实现动画效果
$("button").click(function(){
  $("div").slideDown(3000);
  $("div").queue(function(){
    $(this).css("background-color", "green");
    $(this).dequeue();
  });
  $("div").slideUp(2000);
});

实战示例1:击鼓传花小游戏

现在我们来使用jQuery的queue()方法,编写一个击鼓传花的小游戏。

游戏规则

  • 点击击鼓后,音乐开始播放,同时小花传给随机的下一个人
  • 小花传递给下一个人时,需要使用动画效果
  • 当音乐结束时,小花传递到谁手里,谁就会被淘汰出局

游戏实现

首先,我们需要准备好游戏的HTML代码:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>击鼓传花小游戏</title>
<style>
.rhythm{
    background:url(images/boombox.jpg) no-repeat 0px 0px;
    width:150px;
    height:229px;
    cursor:pointer;
}
.player{
    width:80px;
    height:80px;
    position:absolute;
    top:70px;
    left:90px;
    display:none;
}
</style>
<script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
<script src="https://cdn.bootcss.com/jqueryui/1.12.1/jquery-ui.min.js"></script>
<script src="https://cdn.bootcss.com/howler/2.1.3/howler.min.js"></script>
<script>
var names = ["小王","小张","小李","小赵","小杨","小刘"];
var current = 0;
$(function(){

    //准备音效
    var sound = new Howl({
      src: ['sounds/Race_Car-Idle_Lo.mp3']
    });

    //准备队列
    $("#btnStart").click(function(){
        $("#btnStart").hide();
        $("#txtWait").show();
        $("h1").text("击鼓传花游戏开始!");
        $("#txtWait").text("音乐准备中,请稍候...");
        sound.once('load', function(){
            $("h1").text("保持节奏,小花赶快传递!");
            $("#txtWait").hide();
            $(".player").show();
            $("#player1").addClass("rotate");
            sound.play();
            $("h2").text(names[current]+"手中有花!");
            $("#player1").queue("wait", function(next){
                $("#player1").removeClass("rotate");
                current++;
                if(current>=names.length){current=0;}
                $("h2").text(names[current]+"手中有花!");
                $("#player"+(this.id.replace("player",""))).effect("transfer", { to: "#player"+((this.id.replace("player","")%5)+1), className: "transfer" }, 1000, function(){
                    next();
                    $(this).addClass("rotate");
                });
                $(this).dequeue();
            });
            $("#player1").queue("wait", function(next){
                sound.once('end', function(){
                    alert(names[current]+"被淘汰了!");
                    location.reload(true);
                });
                $(this).dequeue();
            });
            $("#player1").dequeue("wait");
        });
    });

});
</script>
</head>
<body>

<div class="rhythm" id="btnStart"></div>
<div class="player" id="player1"></div>
<div class="player" id="player2"></div>
<div class="player" id="player3"></div>
<div class="player" id="player4"></div>
<div class="player" id="player5"></div>
<h1>击鼓传花小游戏</h1>
<h2>谁手中有花?</h2>
<div id="txtWait">游戏马上开始!请等待...</div>
</body>
</html>

在代码中,我们需要为游戏中的每个人物创建一个class为player的div,同时定义每个人物的绝对位置。因为每次小花的传递是需要动画效果的,所以我们需要使用UI的effect方法,用于实现transfer效果。当游戏结束时,我们需要自动重新加载网页,以便重新开始游戏。

在JavaScript代码中,我们首先为游戏中的每个人物添加一个队列(wait),用于等待自己传递小花。在音效准备好后,我们开始播放音乐和动画效果,并将当前小花的持有者初始化为第一个人物(current=0)。在小花传递时,我们通过使用UI的effect方法,将小花从当前持有者传递给随机的下一个人。

实战示例2:实现一个队列定时器

现在我们来使用jQuery的queue()方法,编写一个队列定时器。

程序实现

我们需要准备一个点击按钮,当点击按钮时,我们需要启动一个队列,并每隔1秒在队列中追加一个函数,直到队列中已经有10个函数位置。然后我们执行队列中的函数,展示函数执行的顺序情况。

我们需要先准备一个空的div,用于展示队列的执行情况。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>队列定时器</title>
<script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
<script>
$(function(){

    $("#start").click(function(){
        var queue = $({});
        var result = "";
        for(var i=0;i<10;i++){
            queue.queue("test",function(next){
                result = result + i + "-";
                $("#out").text(result);
                next();
            });
            setTimeout(function(){
                queue.dequeue("test");
            },i*1000);
        }
    });

});
</script>
</head>
<body>

<button id="start">启动定时器</button>
<div id="out"></div>

</body>
</html>

在JavaScript代码中,我们需要通过$({})的方式来创建一个空的jQuery对象(queue),然后通过使用queue()方法,为该对象添加名为test的队列。在for循环中,我们需要使用queue.queue()方法,将指定的函数添加到队列的末尾。

为了实现每隔1秒添加一个函数的效果,我们需要使用setTimeout()方法,指定不同的延时执行时间。同时,在每次执行函数后,我们还需要使用queue.dequeue("test")来移除队列中的函数。当队列中函数的数量等于10时,我们即刻执行队列中的所有函数,并展示函数执行的顺序情况。

以上就是实现队列定时器的完整攻略示例。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:jQuery queue()的例子 - Python技术站

(0)
上一篇 2023年5月12日
下一篇 2023年5月12日

相关文章

  • jQWidgets jqxMaskedInput readOnly属性

    jQWidgets jqxMaskedInput readOnly属性详解 jQWidgets是一个基于jQuery的UI组件库,提供了丰富UI组件工具包。jqxMaskedInput是其中之一。本文将详细介绍jqxMaskedInput的readOnly属性,包括用法、语法和示例。 readOnly属性的语法 jqxMaskedInput的readOnly…

    jquery 2023年5月10日
    00
  • jQWidgets jqxTreeGrid focus()方法

    下面是详细讲解”jQWidgets jqxTreeGrid focus()方法”的攻略说明。 1. 简介 jQWidgets是一款专业的Web UI库,其中包含了各种实用的UI组件,如Grid、TreeGrid、Chart等等。jqxTreeGrid是其中的一种组件,它是基于DataTable的表格控件,具备类似TreeView的树形结构,支持对表头、行、单…

    jquery 2023年5月12日
    00
  • jQWidgets jqxEditor宽度属性

    jQWidgets jqxEditor宽度属性 jQWidgets是一个基于jQuery的UI组件库,提供了丰富的UI组件和工具包括表格、下拉等。jqEditor是jQWidgets的组件之一,用于创建富文本编辑器。width属性是jqxEditor的一个属性,用于设置富文本编辑器的宽度。 width的基本语法 width属性用于设置富文本编辑器的宽度,其基…

    jquery 2023年5月9日
    00
  • jQWidgets jqxNumberInput inputMode属性

    以下是关于 jQWidgets jqxNumberInput 组件中 inputMode 属性的详细攻略。 jQWidgets jqxNumberInput inputMode 属性 jQWidgets jqxNumberInput 组件的 inputMode 属性用于设置数字输入模式。 语法 $(‘#numberInput’).jqxNumberInput…

    jquery 2023年5月12日
    00
  • jQWidgets jqxScheduler editDialogOpen事件

    以下是关于 jQWidgets jqxScheduler 组件中 editDialogOpen 事件的详细攻略。 jQWidgets jqxScheduler editDialogOpen 事件 jQWidgets jqxScheduler 组件的 editDialogOpen 用于在编辑对话框打开时触发相应的操作。 方法 // 绑定 editDialogO…

    jquery 2023年5月12日
    00
  • Manjaro安装CUDA实现教程解析

    Manjaro安装CUDA实现教程解析 CUDA是NVIDIA提供的一套用于并行计算的软件和硬件的整合方案,可以利用GPU的强大计算能力加速计算任务。本文将介绍如何在Manjaro Linux操作系统上安装CUDA。 步骤1:更新系统 在安装之前,请确保您的系统已经更新到最新版本。打开终端并执行以下命令更新系统: sudo pacman -Syu 步骤2:检…

    jquery 2023年5月27日
    00
  • document.getElementByID(‘txtName’)或 $(‘#txtName’) 哪个更快

    在JavaScript中,使用document.getElementById(‘txtName’)或$(‘#txtName’)都可以选择一个元素。但是,哪个更快呢?以下是详细的攻略: document.getElementById(‘txtName’) .getElementById(‘txtName’)是JavaScript中选择素的原生方法。它使用元素的…

    jquery 2023年5月9日
    00
  • jQuery的实现原理的模拟代码 -1 核心部分

    首先让我们来了解一下“jQuery实现原理的模拟代码 -1 核心部分”的概念。这个概念是指,我们通过编写一些JavaScript代码来实现类似于jQuery的功能,如选择元素、操作元素等常用的DOM操作。下面是详细的攻略过程。 1. 选择器部分 首先,我们需要实现 jQuery 的选择器部分,这是 jQuery 很重要的一个功能。我们可以使用 documen…

    jquery 2023年5月28日
    00
合作推广
合作推广
分享本页
返回顶部