Übergabe von Parametern an JQuery .trigger


82

Ich verwende den JQuery-Trigger, bin mir aber nicht sicher, wie die richtige Syntax zum Übergeben von Parametern in meiner Situation lautet. Hier rufe ich an:

$('#'+controlName).trigger(event);

Hier mache ich die Ereignisbindung:

$(window).on('onPartialRendered', onPartialRendered);

Und hier ist mein Event-Handler:

var onPartialRendered = function () {

    .....
};

Alles funktioniert gut, bis ich versuche, Parameter zu übergeben. Was wäre der richtige Weg, um es gemäß meinem Beispiel zu tun?


Ja, ich habe versucht, Parameter mit dem Syntax-Trigger (Ereignis, ['Param1', 'Param2']) zu übergeben, aber ohne Erfolg
user517406

Ihr onPartialRenderedhat keine Parameter in seiner Signatur. Es sollte sein onPartialRendered = function(e, p1, p2).
Rocket Hazmat

@ user517406 Wie haben Sie versucht, die Parameter zu übergeben, die nicht funktionierten?
Epascarello

@ user517406 versuche einen Code in jsfiddle.net zu posten, mit dem wir spielen können.
Edper

Antworten:


151

Der erste Parameter ist immer eine Zeichenfolge mit dem Ereignisnamen und die nächsten Parameter sind zusätzliche Daten:

.trigger('foo', [1, 2]);

.on('foo', function(event, one, two) { ... });

Besonderer Dank für Rocket Hazmat

Beispiel:

var controller = {
  listen: function (event, json, string) {}
};

$('body').trigger('this_works', [{data: [1, 2, 3]}, 'something']);

$('body').on('this_works', function (event, json, string) {
  controller.listen(event, json, string);
});

Remote partiell:

Bitte nicht auf diese Weise verwenden. Es gibt viele Artikel über dieses Problem im Netzwerk. Dies nimmt viel Zeit in Anspruch und erzeugt unnötigen Datenverkehr im Netzwerk. Bitte benutzen Sie diesen Weg:

var template = $('#templates #example_template').detach();
var clone = template.clone();
clone.find('.some_field').val('new_data');
clone.attr('id', null);
$('table tbody').append(clone);

11
Nicht ganz. .triggernimmt nur 2 Argumente. Sie müssen ein Array (oder Objekt) von Parametern übergeben.
Rocket Hazmat

Was wäre die richtige Syntax, wenn ich die Ereignisbindung wie in meinem Beispiel vom Ereignishandler trennen möchte?
user517406

Können Sie bitte ein Syntaxbeispiel angeben? Die Verwendung dieser Syntax funktioniert nicht: EVENT BINDING $ (Fenster) .on ('onPartialRendered', onPartialRendered (p1, p2)); EVENT HANDLER var onPartialRendered = Funktion (p1, p2) {...}
user517406

2
@ user517406 Das ist völlig falsch, um eine Funktionsreferenz als Ereignishandler zu übergeben. Fügen Sie die Parameter , wo Sie definieren die Funktion. var onPartialRendered = function (event,one,two) {
Kevin B

2
Ändern Sie einfach den Auslöser in: $ ('body'). Trigger ({Typ: 'this_works', Daten: [1,2,3], Nachricht: 'etwas'});. Der Handler kann immer noch nur eine Funktion (Ereignis) enthalten und die Parameter durch Angabe von event.data und event.message abrufen.
Linnium
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.