0

私の問題は次のコードです!jQuery オブジェクトを XjQuery オブジェクトに拡張したいのですが、うまくいくようです。しかし、オブジェクトを見つける各関数では、関数 myfunc が宣言されていません。ここで何が問題なのですか?

歓声と

下手な英語でごめんなさい

    XjQuery = function()
    {           
        var jq = $("<div id=xjq>hallo</div>");
        $.extend(this, jq);
    }
    XjQuery.prototype.myfunc = function() {
        this.append("<p>myfunc called</p>");
    }
    xjq = new XjQuery();

    xjq.myfunc(); // this works
    $("#maindiv").append(xjq); // works also 
    $("#maindiv").find("#xjq").each(function() {
        $(this).myfunc(); // doesn't work
    });
4

1 に答える 1

2

の内部eachthisは、ネイティブ DOM 要素$(this)があり、jQuery オブジェクトです。jQuery オブジェクトをオブジェクトに「変換」する必要がありxjQueryます。

xJqueryそもそもなぜオブジェを作っているのですか?jQueryプラグインを作ってみませんか?

jQuery.fn.myfunc = function() {
    this.append("<p>myfunc called</p>");
};

その後、行うことができます$("#maindiv").myfunc()

編集: jQuery オブジェクトをオブジェクトとして「キャスト」するにはxjQuery、次のようにコンストラクターを変更できます。

XjQuery = function(jq)
{           
    jq = typeof jq === 'undefined' ? $("<div id=xjq>hallo</div>") : $(jq);
    $.extend(this, jq);
}

次に、次のことができます。

$("#maindiv").find("#xjq").each(function() {
    new XjQuery(this).myfunc();
});
于 2012-04-20T14:59:17.367 に答える