我想知道如何创建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打印树,但是我有很多参数,很难阅读和编辑。
答案 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);
}