为了账号安全,请及时绑定邮箱和手机立即绑定

Jquery - 如何为多个元素绑定单击事件?

Jquery - 如何为多个元素绑定单击事件?

慕田峪7331174 2023-10-04 14:30:58
我使用 jquery 为图像制作动画,以制作混合图像,单击时滚动不同部分。我想过这样做$("#head").click(function () {        if (headclix < 9) {            $("#head").animate({                left: "-=367px"            }, 500);            headclix++;        } else {            $("#head").animate({                left: "0px"            }, 500);            headclix = 0;        }    });    $("#eyes").click(function () {        if (eyeclix < 9) {            $("#eyes").animate({                left: "-=367px"            }, 500);            eyeclix++;        } else {            $("#eyes").animate({                left: "0px"            }, 500);            eyeclix = 0;        }    });    $("#nose").click(function () {        if (noseclix < 9) {            $("#nose").animate({                left: "-=367px"            }, 500);            noseclix++;        } else {            $("#nose").animate({                left: "0px"            }, 500);            noseclix = 0;        }    });    $("#mouth").click(function () {        if (mouthclix < 9) {            $("#mouth").animate({                left: "-=367px"            }, 500);            mouthclix++;        } else {            $("#mouth").animate({                left: "0px"            }, 500);            mouthclix = 0;        }    });我希望有更好的方法我想我可以为班级和每个班级做一些事情,但不知道如何让它发挥作用。需要将其设为点击事件并跟踪每个图像部分$(".face").each(function (i) {        if (i < 9) {            $(".face").parent().animate({                left: "-=367px"            }, 500);            i++;        } else {            $(".face").parent().animate({                left: "0px"            }, 500);            i = 0;        }    });HTML:<div id="pic_box">                <div id="head" class="face"><img src="images/headsstrip.jpg"></div>                <div id="eyes" class="face"><img src="images/eyesstrip.jpg"></div>                <div id="nose" class="face"><img src="images/nosesstrip.jpg"></div>                <div id="mouth" class="face"><img src="images/mouthsstrip.jpg"></div>  </div>此链接中的图像将使您了解该功能
查看完整描述

1 回答

?
白板的微信

TA贡献1883条经验 获得超3个赞

您可以创建一个面部对象来保存每个面部部件的点击计数,还可以创建一个处理点击事件的函数(下面名为 clickHandler)。clickHandler 接受id并在具有该 的元素上调用适当的动画函数id。


检查如下:


var face = {

  "headClicks" : 0,

  "eyesClicks" : 0,

  "noseClicks" : 0,

  "mouthClicks" : 0,

  "clickHandler" : function(id) {

    if(this[id+"Clicks"] < 9) {

      animateLeft367(id);

      this[id+"Clicks"]++;

    } else {

      animateLeft0(id);

      this[id+"Clicks"] = 0;

    }

  }

}


function animateLeft367(id) {

  $("#" + id).animate({left: "-=367px"}, 500);

  console.log('animated ' + id + ' 367');

}


function animateLeft0(id) {

  $("#" + id).animate({left: "0px"}, 500);

  console.log('animated ' + id + ' 0');

}



$(".face").click(function() {

  face.clickHandler(this.id);

});

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>


<div id="pic_box">

    <div id="head" class="face"><img src="images/headsstrip.jpg"></div>

    <div id="eyes" class="face"><img src="images/eyesstrip.jpg"></div>

    <div id="nose" class="face"><img src="images/nosesstrip.jpg"></div>

    <div id="mouth" class="face"><img src="images/mouthsstrip.jpg"></div>

</div>


查看完整回答
反对 回复 2023-10-04
  • 1 回答
  • 0 关注
  • 89 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信