Добавление к предложению DuckMaestro -
Источники для Script.jQuery находятся на github ... они там, чтобы люди могли изменить его, не блокировать и не прибегать к таким вещам, как InvokeMethod,Script.Literal и другие подобные неоптимальные обходные пути.
Причина, по которой подпись не такова для начала, заключается в том, что каждый обработчик событий не должен определять дополнительные параметры в своей подписи, когда в этом нет необходимости.
Опция 1 -
Создать другую подпись делегата - например, jQueryEventHandler.А затем создайте перегрузки Bind и Trigger, которые используют вашу новую подпись.Это не сложно, особенноесли вы посмотрите на существующий источник реализации в качестве ссылки.
Вариант 2 -
Используйте другой шаблон, предложенный примерами в http://api.jquery.com/trigger.
var event = jQuery.Event("item-added");
event.item = "ball";
$("#someid").trigger(event);
Специально добавьте свойства в jQueryEvent, а затем создайте производный класс, в котором вы инициируете событие, установите свойства для него для ваших конкретных сценариев.А затем в обработчике событий приведите jQueryEvent к определенному типу.
Хорошая вещь в этом заключается в том, что он совместим с DOM ... с точки зрения того, что вы будете делать с document.createEvent, иdispatchEvent.Поэтому я предпочитаю эту опцию, помимо того факта, что для каждого конкретного сценария не требуется перегрузок bind / trigger.
Одна вещь, с которой вы столкнетесь прямо сейчас, - это то, что сам jQueryEvent запечатан прямо сейчас,но я рад сделать это распечатанным для поддержки этих сценариев (обязательно зарегистрируйте ошибку на github, чтобы ее можно было отслеживать).Тем временем, чтобы быть разблокированным, у вас есть источники, чтобы сделать его распечатанным на вашем конце.
Если вы действительно не хотите переходить к перестройке Script.jQuery, временного обходного пути (пока у вас нетпостроить, откуда вы можете начать производную) следующее:
jQueryEvent e = jQuery.Event("item-added");
Script.Literal("{0}.item = {1}", e, "ball");