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