Używam wyzwalacza JQuery, ale nie jestem pewien, jaka jest prawidłowa składnia do przekazywania parametrów w mojej sytuacji. Oto, gdzie dzwonię:
$('#'+controlName).trigger(event);
Oto, gdzie robię oprawę wydarzenia:
$(window).on('onPartialRendered', onPartialRendered);
A oto moja obsługa zdarzeń:
var onPartialRendered = function () {
.....
};
Wszystko działa dobrze, dopóki nie spróbuję przekazać parametrów. Jaki byłby właściwy sposób na zrobienie tego na moim przykładzie?
javascript
jquery
user517406
źródło
źródło
onPartialRendered
nie ma żadnych parametrów w swoim podpisie. Tak powinno byćonPartialRendered = function(e, p1, p2)
.Odpowiedzi:
Pierwszy parametr to zawsze ciąg znaków z nazwą zdarzenia, a kolejne parametry to dodatkowe dane:
.trigger('foo', [1, 2]); .on('foo', function(event, one, two) { ... });
Specjalne podziękowania dla Rocket Hazmat
Przykład:
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); });
Zdalne częściowe:
Proszę nie używać w ten sposób. Jest wiele artykułów na temat tego problemu w sieci. Zajmuje to dużo czasu i generuje niepotrzebny ruch w sieci. Proszę używać w ten sposób:
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);
źródło
.trigger
przyjmuje tylko 2 argumenty. Musisz przekazać tablicę (lub obiekt) parametrów.var onPartialRendered = function (event,one,two) {