ฟังก์ชั่น jquery animate เมื่อคลิกปุ่มเดียว

    $('.edit').click(function () {
    var anim = 0;
    if(anim == 0){
        $('.foo_menu1').animate({
            bottom:"0px",
            opacity: "1",
            }, 600);

        $('.foo_menu2').animate({
            bottom:"-47px",
            opacity: "0",
            }, 600);

        anim += 1;
    }else{
        $('.foo_menu1').animate({
            bottom:"-47px",
            opacity: "0",
            }, 600);

        $('.foo_menu2').animate({
            bottom:"0px",
            opacity: "1",
            }, 600);
            anim=0;
    }
    });
})

ฉันเป็นมือใหม่กับ jQuery โปรดช่วยฉันด้วย ฉันมีปุ่มเดียวและกล่อง div สองกล่อง โดยค่าเริ่มต้น กล่อง div กล่องแรก (foo_menu1) จะปรากฏขึ้น ขณะที่คลิกที่ปุ่ม กล่องแรกจะปรากฏขึ้น และกล่องที่สองจะหายไป

แต่เมื่อฉันคลิกครั้งแรก มันก็ทำงานได้ดีตามเงื่อนไข IF แรก แต่ถ้าฉันคลิก btn เดิมอีกครั้ง มันจะไม่เข้าไปด้านในของฟังก์ชัน else


person user687414    schedule 01.04.2011    source แหล่งที่มา
comment
ย้าย var anim = 0; ออกไปนอกฟังก์ชันคลิก คุณกำลังรีเซ็ตภาพเคลื่อนไหวให้เป็นศูนย์ทุกครั้งที่คลิก   -  person mVChr    schedule 01.04.2011


คำตอบ (1)


คุณต้องย้าย var anim = 0; ออกไปข้างนอกและทำให้เป็นตัวแปรร่วม

var anim = 0;

$('.edit').click(function () {
  if(anim == 0){
  // code
  } else {
  }
})

มิฉะนั้น คุณจะเริ่มต้นใหม่เมื่อคลิก

นอกจากนี้ ฉันขอแนะนำให้คุณดู .data() API ของ jquery หากคุณต้องการเก็บข้อมูลที่เกี่ยวข้องกับองค์ประกอบต่างๆ วิธีนี้จะหลีกเลี่ยงตัวแปรร่วมในขอบเขตของคุณ

http://api.jquery.com/jQuery.data/

person JohnP    schedule 01.04.2011