1

jQuery.triggerに渡したいjQueryオブジェクトがあります。バインドされた関数は、このオブジェクトを受け取り、それを使用して何かを実行する必要があります。ただし、バインドされた関数は、トリガーに渡された完全なjQueryオブジェクトではなく、DOMノードを受け取っているようです。

例:

var doSomething = function(event, object) {
    object.myPluginFunction(); 
}

$("#selector").bind("finished", doSomething);

var myObject = $("#table").myPlugin();
$("#selector").trigger("finished", myObject);

問題は次のとおりです。doSomethingアクセスできませんobject.myPluginFunction...受信したオブジェクトは実際にはオブジェクトではないように見えます。代わりに、それはDOMノードです。jQueryがそれを取り除くように私には思えます。

$.myPluginコールバックを呼び出したり導入したりせずにアクセスする方法はありますか?

jQuery 1.4.1を使用していますが、アップグレードできません。

4

2 に答える 2

1

配列内のトリガーパラメータを呼び出す必要があります

$("#selector").trigger("finished", [myObject]);​

jsFiddle

また、この「終了」は作成したカスタムイベントであり、UI(ネイティブ)イベントに関連付けられていないため、triggerHandlerの代わりにを使用して呼び出す方が正しいことに注意してくださいtrigger

于 2012-07-19T11:11:54.220 に答える
0

別の例:

var obj = (function() {
    var that = {};
    var name = "toto";

    that.getName = function() {
        return name;    
    };

    return that;
})();

$("#btnTest").bind("customEvent", function(evt, obj) {
    console.log(obj.t1.getName());
});

$("#btnTest").click(function() {
    $("#btnTest").trigger("customEvent", {t1: obj});
});

jsFiddle: http: //jsfiddle.net/EJLwu/3/

于 2012-07-19T11:19:56.343 に答える