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

each,内部this是一个原生 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 回答