我想创建一个新的jQuery函数,我可以在该函数中传递一个或多个值。然后,对于DOM的所有匹配元素,迭代所有不同的选项,但一次只能选择一个选项。因此,对于未处理的所有元素,重放原型函数。所有的处理应该是相同的功能,所以我想在递归,但因为我不是真的经验javascript中的原型,我不知道如何做到这一点。 现在,没有错误,但甚至没有任何事情发生。
这是对的吗?
感谢您的启发。
(function($) {
$.fn.foo = function (prop) {
var options = $.extend({
"elt" : "", // Declaration of my options
"callback" : function(){}
}, prop)
var optionsTab = options.elt.split('#');
var current = optionsTab.slice(0,1),
var remaining = optionsTab.slice(1);
var result = this.each(function() {
var el = $(this);
// Code handling the first element in the option
});
if (remaining.length > 0) {
$({ "elt": remaining.join("#") }); // Trial of recursion of foo
return result;
}
}
答案 0 :(得分:0)
我认为你正试图在超时时递归调用我是否正确?
var result = this.each(function() {
var el = $(this);
// Code handling the first element in the option
});
if (remaining.length > 0) {
$({ "elt": remaining.join("#") }); // Trial of recursion of foo
var me = this;
setTimeout(function(){
me.foo(parameters);//not sure what the parameters should be
},500);
}
return this;
一些有用的信息:https://stackoverflow.com/a/16063711/1641941(在“此变量”下)
答案 1 :(得分:0)
创建this fiddle并且它有效:
$.fn.foo = function (prop) {
var options = $.extend({
"elt" : "", // Declaration of my options
"callback" : function(){}
}, prop);
var optionsTab = options.elt.split('#');
var current = optionsTab.slice(0,1);
var remaining = optionsTab.slice(1);
this.each(function() {
var el = $(this);
// Code handling the first element in the option
});
if (remaining.length > 0) {
this.foo({ "elt": remaining.join("#") }); // Trial of recursion of foo
}
return this;
};