Επειδή μόλις μιλήσαμε για συμβάντα, τώρα είναι η κατάλληλη στιγμή για να αναφέρουμε προσαρμοσμένα συμβάντα. Όλα τα γεγονότα για τα οποία έχουμε μιλήσει μέχρι τώρα είναι «πραγματικά» γεγονότα. Εκδηλώσεις που προέρχονται από το DOM βασίζονται σε πραγματικά πράγματα που συμβαίνουν, όπως ένα κλικ ή το πάτημα του πλήκτρου. Αυτά τα συμβάντα μπορούν να "ενεργοποιηθούν" τεχνητά στο jQuery. Για παράδειγμα, για "ψεύτικο" ένα κλικ σε ένα κουμπί, μπορείτε να κάνετε:
$("#some-button").trigger("click");
Στη συνέχεια, τυχόν χειριστές κλικ που είναι συνδεδεμένοι σε αυτό το κουμπί θα ενεργοποιηθούν σαν ένας χρήστης να κάνει κλικ σε αυτό το κουμπί. Τι γίνεται όμως αν το κάναμε:
$("#some-button").trigger("dance");
Τι συμβαίνει τότε; Το «χορό» δεν είναι «πραγματικό» γεγονός. Αλλά δεν θα πετάξει κανένα λάθος. Απλώς συμβαίνει ότι πιθανότατα δεν υπάρχει κανένας χειριστής «χορού» που να είναι δεσμευμένος σε αυτό το κουμπί. Αλλά θα μπορούσε να υπάρχει και αυτό είναι ουσιαστικά ένα προσαρμοσμένο συμβάν. Ένα συμβάν με ένα όνομα που μόλις συνθέτετε.
Γιατί να το κάνεις αυτό? Κυρίως οργανωτικοί λόγοι. Ίσως θέλετε να διαχωρίσετε τη JavaScript που χειρίζεται συμβάντα και ενέργειες και τη JavaScript που χειρίζεται δεδομένα και διοικητικά θέματα. Αυτό είναι πολύ λογικό. Εάν αυτό το κουμπί ήταν ίσως ένα κουμπί "Αποθήκευση ρυθμίσεων", θα μπορούσατε απλώς να απενεργοποιήσετε ένα προσαρμοσμένο συμβάν που ονομάζεται "αποθήκευση-ρυθμίσεις" και αλλού έχετε έναν χειριστή που περιμένει να ενεργοποιηθεί το συμβάν και πραγματοποιεί την πραγματική αποθήκευση δεδομένων. Αυτό είναι ουσιαστικά αυτό που κάναμε στο παράδειγμα από το βίντεο.
Μια άλλη περίπτωση χρήσης για προσαρμοσμένα συμβάντα είναι η σύνταξη γενικών στοιχείων διεπαφής χρήστη. Μιλώ για αυτό σε αυτήν την ανάρτηση ιστολογίου.
Ίσως δημιουργείτε ένα εφέ ακορντεόν ως στοιχείο UI. Το ακορντεόν κάνει ό, τι κάνει όλα τα ακορντεόν, ανοίγει και κλείνει πάνελ σε κλικ / βρύσες. Το στοιχείο διεπαφής χρήστη το κάνει πολύ ωραία. Τώρα ένας προγραμματιστής που χρησιμοποιεί αυτό το ακορντεόν μπορεί να έχει ειδικά και μοναδικά πράγματα που θέλει να συμβεί με αυτό. Ας υποθέσουμε ότι χρησιμοποιούν το ακορντεόν για τις ρυθμίσεις λογαριασμού και όταν ένας χρήστης κλείνει έναν πίνακα, θέλει να αποθηκεύσει τα δεδομένα από τα στοιχεία φόρμας σε αυτόν τον πίνακα. Ένα παραδοσιακό μοντέλο μπορεί να είναι ο συγγραφέας αυτού του στοιχείου διεπαφής χρήστη ακορντεόν να προσφέρει λειτουργίες επανάκλησης όταν συμβαίνει αυτή η ενέργεια. Όταν προετοιμάζετε το ακορντεόν, περνάτε τις λειτουργίες επανάκλησης που θέλετε να καλέσετε όταν συμβαίνουν αυτά τα πράγματα. Αυτός είναι ένας δρόμος για να κατεβείτε. Ένας άλλος δρόμος θα ήταν το ακορντεόν να απενεργοποιεί αυτόματα τα προσαρμοσμένα συμβάντα για όλες τις σχετικές ενέργειες που κάνει.Όταν κλείσει αυτό το πάνελ, θα μπορούσε να πυροδοτήσει έναpanelClosed
εκδήλωση στο ίδιο το στοιχείο ακορντεόν. Τότε οι προγραμματιστές που συνεργάζονται με αυτό θα μπορούσαν να δεσμευτούν μόνο σε αυτά τα συμβάντα. Είναι ένας άλλος δρόμος που μπορείτε να ακολουθήσετε για λόγους οργάνωσης που μπορεί να είναι αρκετά κομψοί.