מאמר זה מהווה המשך למאמר על האירועים שיש ב-jQuery. סקרנו את אירוע ה-on שקושר בין אלמנט, לאירוע ולפונקציה שתופעל בעקבות האירוע הזה. גם במאמר הזה אני אשתמש בפונקצית alert פשוטה ובאלמנט של פסקה עם id מסוים.
trigger
trigger משמש אותנו לקשירה בין אירועים שונים. נניח שיש לי שתי פסקאות: פסקה א' ופסקה ב'. אני מעוניין שלחיצה על פסקה א' תפעיל הודעה מעצבנת א' ולחיצה על פסקה ב' תפעיל גם הודעה מעצבנת ב' וגם את מה שלחיצה על פסקה א' מפעילה.
זה שימושי במיוחד כאשר יש לי ממשקים מסובכים שבהם יש לי סכימה של כל הטורים שסימנתי וכפתור שמבצע שליחה של הסכימה. באמצעות trigger לחיצה על הכפתור השני תבצע גם את הפעולה של הכפתור הראשון.
איך עושים את זה? בקלות.
פסקה ראשונה
פסקה שניה
<script type="text/javascript">
$(document).ready(function() {
$("#example1").on("click" , function () {
alert("הודעה מעצבנת ראשונה");
});
$("#example2").on("click" , function () {
alert("הודעה מעצבנת שניה");
$("#example1").trigger("click");
});
});
</script>
אפשר להשתמש גם באירוע triggerHandler שעושה את אותו הדבר כמו trigger רק עם הבדל חשוב אחד (לפחות מבחינת המאמר הזה) הוא מונע מהאלמנט שהופעל לקבל התנהגות של 'מופעל' מבחינת הדפדפן. זה קצת מסובך להסבר, תחשבו למשל על כפתור שיש לו אירוע של קליק, בדפדפני אינטרנט מסוימים אחרי שיש עליו קליק, או טריגר של קליק, יש מסגרת אפורה מסביבו. אם אני אשתמש ב-triggerHandler לא תהיה את המסגרת האפורה מסביבו. לא הבנתם? לא נורא.
hover
hover הוא כמו toggle רק שבמקום קליקים מדובר על hover. יש פונקציה אחת כאשר העכבר מרחף מעל האלמנט ופונקציה שניה כאשר העכבר לא מרחף מעל האלמנט. הייתי מדגים עם alert אך כיוון שרוב הזמן העכבר יהיה מחוץ לאלמנט זה יגרום לעוד ועוד alertים מעצבנים. לפיכך משתמש באפקט של CSS.
העבירו מעלי את העכבר
$(document).ready(function() {
$("#example4").hover(function () {
$(this).css("color","red");
} , function () {
$(this).css("color","black");
});
});
Multiple bind
אני יכול לבצע bind לכמה פונקציות באותה פקודה. נניח שיש לי פסקה שאני רוצה לקשור אליה גם אירוע של לחיצה וגם אירוע של mouse in ן-mouse out. כל מה שאני צריך לעשות זה להעביר ל-on אובייקט שמכיל את כל האירועים שאני רוצה לקשור אליהם.
הקליקו על הפסקה הזו על מנת לראות הודעה. העבירו את העכבר מעל הפסקה כדי לראות את הצבע משתנה
וככה זה נראה, שימו לב איך האובייקטים מסודרים יפה ובאופן אלגנטי. הרבה יותר נעים להשתמש ב-bind ובמיוחד כאשר אנו צריכים לקשור כמה אירועים לאלמנט אחד.
$(document).ready(function() {
$("#example16").on({
click: function () {
alert("הודעה");
},
mouseover: function() {
$(this).css("color","red");
},
mouseout: function() {
$(this).css("color","black");
},
});
});
עד כאן בנוגע לאירועים. עכשיו אחרי שלמדנו על ה-selectors ועל ה-events אנו יכולים לגשת לשלב השלישי והיותר מהנה – הפונקציות המגניבות שאפשר להפעיל באמצעות jQuery. כשעכשיו אנו יכולים להפעיל אותן על כל אלמנט ובעקבות איזה אירוע. במאמר הבא אני מראה חלק מהפונקציות האלו.