将jQuery对象扩展到我自己的Object

时间:2012-04-20 14:51:50

标签: javascript jquery extend

我的问题是以下代码! 我想将一个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
    });

1 个答案:

答案 0 :(得分:2)

each内,this是本机DOM元素,$(this)是jQuery对象。您需要将jQuery对象“转换”为xjQuery对象。

为什么你首先要制作一个xJquery对象?为什么不制作jQuery plugin

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();
});