בחלק הקודם דיברנו על הפונקציה החשובה ביותר בפרק על אירועים בjQuery, הלא היא הפונקציה on. הסברנו גם שon אינה פונקצית אירוע ממש, אלא היא דרך להצמיד אירוע לאלמנטים בDOM. בחלק הזה נדון בעז"ה בפונקציות אירועי עכבר בjQuery – לחיצות מסוגים שונים ומעברים מעל, לתוך ומחוץ לאלמנטים, כולל פירוט על כל אחת מהפונקציות.

התחביר הבסיסי עבור פונקציות אירועים מקוצרות

jQuery('selector').eventName(function(){
     // Your code here 
});

את המילה eventName מחליף השם של האירוע שבו נרצה להשתמש. הקוד הזה רלוונטי עבור כל פונקציות האירועים, כולל אירועי עכבר, מקלדת, טאצ' ועוד.

אירועי עכבר

.click

מתחולל בעת לחיצה עם העכבר, או לחילופין לחיצה על enter עם המקלדת במידה והסלקטור הוא אלמנט שאמור להיות קליקבילי כמו כפתור או לינק. עוד על אלמנטים קליקביליים בפרק על ניווט מקלדת.

.dblclick

אירוע לחיצה כפולה (double click) על אלמנט. התנאים להתחוללות האירוע – שתי לחיצות על אותו אלמנט, כשגם הלחיצה עצמה וגם הרמת האצבע מתרחשות מעל אותו אלמנט בפרק זמן קצר ביותר. פרק הזמן המדויק משתנה ממערכת הפעלה אחת לשניה ומדפדפן אחד למשנהו.

הערה חשובה: לא מומלץ לתת לאותו אלמנט גם קליק רגיל וגם דאבל-קליק, מאחר וזה תלוי דפדפן מי מהאירועים יתחולל ראשון, והאם האירוע של הקליק יתחולל במידה וכבר נורה לאוויר האירוע של דאבל-קליק. עדיף פשוט להמנע מזה.

.mousedown

מתרחש בעת שהגולש לוחץ על לחצן של העכבר

.mouseup

מתרחש בעת שהגולש מרים את אצבעו מהלחצן של העכבר

שתי פונקציות אלה – mousedown, mouseup – קורות רק בלחיצה של עכבר. כלומר שהן לא תתחוללנה בלחיצה על מסך מגע למשל.

.contextmenu

אירוע שמתרחש בעת קליק ימני על העכבר מעל אלמנט ופתיחת התפריט הקטן. לא יודעת איך להגדיר את זה בבירור. לחצו לחיצה ימנית עם העכבר כעת ותראו לאיזה תפריטון הכוונה… אירוע זה אינו שימושי כלכך. עם כל הניסיון של 6 שנים שלי בjQuery – כעת זו הפעם הראשונה שאני מקלידה את השם שלו…

.mouseenter

כניסה עם העכבר מעל אלמנט

.mouseleave

יציאה של העכבר מעל האלמנט

.hover

תבנית קיצור עבור mouseenter + mouseleave. הפונקציה hover מסוגלת לקבל פונקציה אחת (שתתחולל הן בכניסה והן ביציאה) או שתי פונקציות ברצף – הראשונה עבור כניסת העכבר והשניה עבור היציאה.

לדוגמא

jQuery(selector).hover(function(){
     alert('mouseenter'); 
}, function(){
     alert('mouseleave'); 
});

.mouseover

די דומה לmouseenter(). השווה בשניהם – מזהים מעבר עכבר על אלמנט. השונה ביניהם – במידה ויש לאלמנט שעליו האירוע בנים תחתיו (מצב די נפוץ, לא?!) – במידה ונעשה שימוש בmouseenter – האירוע מתחולל על האבא בלבד, ולא על הבנים, אך אם נשמש ב mouseover – האירוע יתחולל גם כשניכנס עם העכבר מעל הבנים.

.mouseout

יציאת העכבר מעל אלמנט. מתנהג כלפי האלמנטים הבנים באותה צורה כמו mouseover.

ניתן לראות את ארבעת הפונקציות הדומות בדוגמא הבאה:

.mousemove

מתרחש בעת כל תזוזת עכבר מעל אלמנט

 

אלו כל האירועים שקשורים לעכבר. בחלק הבא אי"ה נדבר על אירועי מקלדת ועוד.

5 Responses

  1. איך אני כותב פונקציה שתקלוט לחיצה מהמשתמש במקלדת מגע?
    כלומר כמו הפונקציות .mouseup .mousedown רק שיעבוד במגע

    1. אם האירוע הוא על כפתור, קישור או אינפוט – האירוע click יפעל בלחיצת עכבר, בלחיצה במסך מגע וגם בלחיצת אנטר כאשר הפוקוס נמצא על אותו אלמנט.
      ישנם אירועים שקשורים רק למסכי מגע, כמו touchstart, אבל בדרך כלל מומלץ להשתמש באלמנט מסוג כפתור/קישור/אינפוט, ואז להשתמש פשוט בקליק רגיל וזה עובד בכל מצב.

      הצלחה רבה!!

    1. ישנה אפשרות לבצע גרירה של אלמנטים באמצעות העכבר.
      זה נקרא drag and drop, וכולל שימוש בכמה אירועים שלא פורטו במדריך הזה כי הם פחות שימושיים.
      יש מדריכים מצוינים, כל מה שצריך לחפש בגוגל זה drag and drop js tutorial.

      הצלחה רבה!

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *