Js jquery递归函数

时间:2014-04-11 09:53:38

标签: javascript jquery recursion

我想制作一个递归函数。考虑我有一个名为setoptions的函数,我需要设置2个选项,所以我要做的就是这样调用我的函数两次。

setoptions ("ajax",true);
setoptions ("lamda",false);

所以为了避免它,我应该能够以一种我可以定义多个选项的方式编写函数,比如

setoptions({
    "lamda": false,
    "ajax": true
});

这与jquery的attr函数相同。 喜欢

$("#ff").attr("href","#");
$("#ff").attr("data-type","blue");
// can be used as 
$("#ff").attr({
    "data-type": "blue",
    "href": "#"
});

请不要提供解决方法,因为我需要了解这种学习递归。

基本setOption函数:

  var setOption =  function (val1, val2) {
    $.someplugin(val1, val);
  };

3 个答案:

答案 0 :(得分:1)

试试这个:

function setOption(){
  if(arguments.length==2)
    window.arguments[0] = arguments[1];
   else {
     for(var key in arguments[0]){
       setOption(key,arguments[0][key];
     }
   }
 }

编辑:我使用了window对象,因为我不知道你的值必须设置在哪里。因此,您可能需要修改代码中的if body语句。

Edit2:因为只有这个可以被称为递归,这将是我的方法。如果你想调用一个插件,那么我会设计该插件以递归方式执行。

* 编辑3 * 是的,我觉得这样的事情。 请注意,它仍然不是recursive.console.log()行不应重复。

 var setOption = function () {
     if (arguments.length == 2) {
         console.log(arguments[0], arguments[1]);
     } else if (jQuery.isPlainObject(arguments[0])) {
         for (var key in arguments[0]) {
             console.log(key, arguments[0][key]);
         }

     }
 }
 //USAGE:
 setOption({
     "href": "#",
     "data": "123",
 });

 setOption("cell", true);

}

答案 1 :(得分:0)

尝试:

var setOption =  function (data) {
  for (var key in data) {
    $.someplugin(key, data[key]);
  }
};

答案 2 :(得分:0)

这是我想出来的。如果有更好的方法,请告诉我。 现在这是真正的递归。

var setOption = function () {
     if (jQuery.isPlainObject(arguments[0])) {
         for (var key in arguments[0]) {
             setOption(key, arguments[0][key]);
         }
     } else if (arguments.length == 2) {
         console.log(arguments[0], arguments[1]);
     }
}

//USAGE:
setOption({
  "href": "#",
  "data": "123",
});

setOption("cell", true);