我目前正在通过学习jQuery第4版,我给出了一个接受一个文本输入的表单的示例。表单在提交时,通过jQuery文档搜索输入的字符串,将其检索为一个JSONP对象并显示它。
在示例中,我获得了以下代码提取
//more code
var buildItem = function(item) {
var title = item.name,
args = [],
output = '<li>';
if (item.type == 'method' || !item.type) {
if (item.signatures[0].params) {
$.each(item.signatures[0].params, function(index, val) {
args.push(val.name);
});
}
title = (/^jQuery|deferred/).test(title) ? title : '.' + title;
title += '(' + args.join(', ') + ')';
} else if (item.type == 'selector') {
title += ' selector';
}
output += '<h3><a href="' + item.url + '">' + title + '</a></h3>';
output += '<div>' + item.desc + '</div>';
output += '</li>';
return output;
};
//more code
我无法理解这条线
$.each(item.signatures[0].params, function(index, val) {
args.push(val.name);
});
具体是什么.params实际上做了什么?我知道它是从返回的对象中的签名内访问.params,但我在返回的对象中看不到任何.params,我也无法在.params上找到任何文档。
任何帮助都将不胜感激。
jsFiddle可以在这里找到:http://jsfiddle.net/QPR4Z/2/
答案 0 :(得分:2)
请参阅signatures[0]
中的值 - 请注意,它是来自JSON请求的任意数据 [对于jQuery API文档]。也就是说,除了作为普通属性访问的功能外,“。params”不会执行任何操作。尽管语法高亮,但不是保留字,并且没有特殊含义。
以下是一些相关的提取JSON来说明这一点:
"signatures":[
{ // <-- i.e. signatures[0]
"added":"1.8",
"params":[ // <-- property called "params", which represents an array
// of objects that describe the given parameter
{"name":"selector","type":"Selector",..}
],
..
},
..
]