创建jquery函数

时间:2014-11-26 11:28:26

标签: javascript jquery function

我想知道如何创建jquery函数,然后我可以使用参数名称和在其中声明的值调用它。

而不是给出正确的顺序变量来实现这样的功能:

myFunction("My function name",true,false);

我想给功能这样的东西:

function({
  displayName: "My function name",
  editable: true,
  displayForm: false;
})

参数dosnt的顺序很重要,因为我是按照他们的名字给出的。

我在每个jquery lib中看到了这个配置(jqPlot,JqGrid,noty等) 这是一个例子:

$(document).ready(function(){
  var plot1 = $.jqplot('chart1', [cosPoints], {  
      series:[{showMarker:false}],
      axes:{
        xaxis:{
          label:'Angle (radians)'
        },
        yaxis:{
          label:'Cosine'
        }
      }
  });
});

- 编辑 -

我有自己的js函数来从json打印树,但是我有很多参数,很难阅读和编辑。

5 个答案:

答案 0 :(得分:3)

没有理由你不能做你想要的,只是让你的函数期望一个对象文字:

function MyFunction(o){
    // Do whatever you need to do with your object properties,
    // like set some corresponding scoped variables.
    // 0 would be their default values, change as appropriate.
    var displayName = o.displayName || 0,
        editable = o.editable || 0,
        displayForm = o.displayForm || 0;
}

然后按你想要的方式调用它:

myFunction({
    displayName: "My function name",
    editable: true,
    displayForm: false;
});

为了记录,这里没有jQuery功能。这都是普通的JavaScript。


注意,如果 使用jQuery,您可以使用$.isPlainObject(o)在继续执行功能之前检查该参数实际上是对象文字。

答案 1 :(得分:2)

只需声明一个以对象为参数的函数:

function myFunction(obj) {
    if(obj.displayName) {
    // do something with obj.displayName
    }

    // ....
}

你可以按照你的指示来打电话:

myFunction({
    displayName: "My function name",
    editable: true,
    displayForm: false;
});

甚至是这样:

myFunction({
    editable: true,
    displayForm: false;
});

为了测试作为参数传递的对象中是否存在属性,只需按照我的要求进行测试:obj.myProperty

另一点是你可以使用$.extend

来设置默认值
function myFunction(obj) {
    var myDefaults = {
        displayName: "My default name",
        editable: false
    };

    // Fill `obj` with the missing values that have to be supplied
    // and that we take in `myDefaults`
    $.extend(obj, myDefaults);

    // ...
}

答案 2 :(得分:0)

jQuery扩展

jQuery.fn.extend({
    zigzag: function () {
        var text = $(this).text();
        var zigzagText = '';
        var toggle = true; //lower/uppper toggle
            $.each(text, function(i, nome) {
                zigzagText += (toggle) ? nome.toUpperCase() : nome.toLowerCase();
                toggle = (toggle) ? false : true;
            });
    return zigzagText;
    }
});

console.log($('#tagline').zigzag());
//output: #1 jQuErY BlOg fOr yOuR DaIlY NeWs, PlUgInS, tUtS/TiPs & cOdE SnIpPeTs.

//chained example
console.log($('#tagline').zigzag().toLowerCase());
//output: #1 jquery blog for your daily news, plugins, tuts/tips & code snippets.

有关更多参考资料,您可以查看:http://www.sitepoint.com/5-ways-declare-functions-jquery/

答案 3 :(得分:0)

{}只是对象的简写。

以此为例

var person = {firstName:"John", lastName:"Doe", age:46};

如果将其作为未命名对象传递给函数,则可以从中选择我们的值。例如:

function myFunc( myArg ){
    alert( myArg.firstName );
}

并用

调用它
myFunc({firstName:"John", lastName:"Doe", age:46});

答案 4 :(得分:0)

如果您只是将对象作为参数传递给函数,它就能正常工作。

test({a:"TestA", b:"TestB"});

function test(object)
{
    alert(object.a);
    alert(object.b);
}