แอนิเมชั่น addClass / removeClass ด้วย jQuery
ฉันใช้ jQuery และ jQuery-ui และต้องการเคลื่อนไหวคุณลักษณะต่าง ๆ บนวัตถุต่าง ๆ เพื่ออธิบายปัญหาที่นี่ฉันได้ทำให้มันง่ายขึ้นสำหรับ div หนึ่งที่เปลี่ยนจากสีน้ำเงินเป็นสีแดงเมื่อผู้ใช้เลื่อนเมาส์ไปที่มัน ฉันสามารถรับพฤติกรรมที่ฉันต้องการได้เมื่อใช้animate()อย่างไรก็ตามเมื่อทำเช่นนั้นสไตล์ที่ฉันเคลื่อนไหวต้องอยู่ในรหัสภาพเคลื่อนไหวและแยกจากสไตล์ชีตของฉัน (ดูตัวอย่างที่ 1 ) ทางเลือกที่จะใช้addClass()และแต่ฉันไม่ได้รับสามารถที่จะสร้างใหม่อีกครั้งพฤติกรรมที่แน่นอนว่าผมจะได้รับกับremoveClass() animate()(ดูตัวอย่างที่ 2 ) ตัวอย่างที่ 1 ลองดูรหัสที่ฉันมีanimate(): $('#someDiv') .mouseover(function(){ $(this).stop().animate( {backgroundColor:'blue'}, {duration:500}); }) .mouseout(function(){ $(this).stop().animate( {backgroundColor:'red'}, {duration:500}); }); มันแสดงพฤติกรรมทั้งหมดที่ฉันกำลังมองหา: เคลื่อนไหวได้อย่างราบรื่นระหว่างสีแดงและสีน้ำเงิน ไม่มีภาพเคลื่อนไหว 'overqueue-ing' เมื่อผู้ใช้เลื่อนเม้าส์เข้าและออกจาก div อย่างรวดเร็ว หากผู้ใช้เลื่อนเมาส์ออก / เข้าในขณะที่ภาพเคลื่อนไหวยังคงเล่นอยู่จะช่วยลดความถูกต้องระหว่างสถานะ 'ครึ่งทาง' ปัจจุบันและสถานะ 'เป้าหมาย' ใหม่ แต่เนื่องจากการเปลี่ยนแปลงสไตล์ถูกกำหนดไว้ในanimate()ฉันต้องเปลี่ยนค่าสไตล์ที่นั่นและไม่สามารถชี้ไปที่สไตล์ชีทของฉันได้ 'การแตกแฟรกเมนต์' ซึ่งสไตล์ถูกกำหนดเป็นสิ่งที่รบกวนจิตใจฉันอย่างแท้จริง …