Μέθοδος triggerHandler
Η μέθοδος triggerHandler επιτρέπει την εκτέλεση
όλων των χειριστών συμβάντων που είναι συνδεδεμένοι σε ένα στοιχείο. Λειτουργεί
παρόμοια με τη μέθοδο
trigger,
αλλά υπάρχουν διαφορές μεταξύ τους:
Ο χειριστής συμβάντων θα ενεργοποιηθεί, αλλά η προεπιλεγμένη
δράση του συμβάντος δεν θα προκληθεί. Για παράδειγμα
triggerHandler('submit'),
ενεργοποιεί τους χειριστές, αλλά δεν προκαλεί την προεπιλεγμένη δράση submit.
Η μέθοδος triggerHandler δρα
μόνο στο πρώτο στοιχείο του συνόλου.
Τα συμβάντα που πυροδοτούνται από το triggerHandler
δεν ανεβαίνουν στην ιεραρχία των στοιχείων DOM.
Το triggerHandler δεν επιστρέφει αντικείμενο jQuery,
επιστρέφει την τιμή που ελήφθη από τον τελευταίο
χειριστή που κλήθηκε. Εάν δεν εκτελεστεί κανένας χειριστής,
επιστρέφει undefined.
Σύνταξη
Ως πρώτη παράμετρο μπορούμε να περάσουμε τον τύπο του συμβάντος ως συμβολοσειρά, ως δεύτερη προαιρετική μια σειρά ή αντικείμενο, που περιέχει επιπλέον παραμέτρους για μετάδοση στον χειριστή:
$(επιλογέας).triggerHandler(τύπος συμβάντος, [επιπλέον παράμετροι]);
Μπορείτε ως πρώτη παράμετρο να μεταβιβάσετε ένα συμβάν
ως αντικείμενο jQuery.Event:
$(επιλογέας).trigger(συμβάν, [επιπλέον παράμετροι]);
Παράδειγμα
Ας κάνουμε έτσι ώστε όταν πατηθεί το κουμπί
με #test1 το πεδίο εισόδου μας να λάβει εστίαση και
στην κονσόλα να εμφανιστεί 'Focused', με άλλα
λόγια - θα εκτελεστεί τόσο η συνάρτηση-χειριστής όσο και
το συμβάν εστίασης. Όταν πατηθεί το δεύτερο κουμπί
με #test2 θα εκτελεστεί μόνο η συνάρτηση-χειριστής,
αλλά το πεδίο εισόδου δεν θα λάβει εστίαση:
<button id="test1">button1</button>
<button id="test2">button2</button>
<input type="text">
$('#test1').click(function() {
$('input').trigger('focus');
});
$('#test2').click(function() {
$('input').triggerHandler('focus');
});
$('input').focus(function() {
console.log('Focused')
});