1

私は要素にそのようなイベントハンドラーを持ってい<select>ます:

select.on("change", null, {
    tbody: $("#tbody"),
    colspan: 5,
    onLoad: onLoadHandler,
}, onSelectChange);

そして、onSelectChange私はオブジェクトを介してこの方法でそれらを取得しevent.dataます:

event.data.tbody,
event.data.colspan,
event.data.onLoad

.on("change")コードの別の場所で、要素のイベントをトリガーしたいのでselect、同じパラメーターを提供する必要があります。

select.trigger("change", [$("#tbody"),  5, onLoadHandler]); // <- how to pass them as event.data?

私の質問は、これらのパラメーターをハンドラーtriggerで同じように使用できるようにする方法です。onSelectChange

event.data.tbody,
event.data.colspan,
event.data.onLoad
4

2 に答える 2

1

event.data を変更することはできませんが、人々が言うように追加のパラメーターを使用できます。または、イベント パラメータを渡すこともできます。

select.on('change', function(event) { console.log(event.tbody, event.colspan, event.onLoad) })
select.trigger({type:'change', tbody:'val', colspan:'val', onLoad:'val'})

ところで、イベントをトリガーして関数を呼び出すのは悪い習慣です。

于 2013-09-30T16:24:19.390 に答える
1

これを行うには、ハンドラーを変更する必要があります。ハンドラーでは、 をevent.data使用するだけでなく、追加のパラメーターからプルするもの、event.dataまたは追加のパラメーターからプルするものを使用します。

function onSelectChange(event, triggeredData)
{
    var data = triggeredData || event.data;
    // do stuff with data.tbody or whatever here
}
select.on("change", null, {
    tbody: $("#tbody"),
    colspan: 5,
    onLoad: onLoadHandler,
}, onSelectChange);

次に、トリガーを使用してさまざまなデータを送信できます。

select.trigger("change", {tbody:$("#tbody"), colspan:5, onLoad:onLoadHandler});

またはevent.data、イベントがユーザー アクションによってトリガーされたときに使用します。

于 2013-09-30T16:18:55.217 に答える