-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
81 lines (59 loc) · 1.55 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
export default (p$, conf = {}, pSelector = []) => {
let _parent = pSelector.join(' ');
if( typeof conf === 'string' ) {
conf = { _selector: conf };
}
if( !Array.isArray(conf) ) {
if( conf.hasOwnProperty('_selector') ) {
let _selector = _parent + ' ' + conf._selector
let _fn = conf._fn || 'html';
// attr('src') | html | text
if( conf._param ) {
return p$.find(_selector)[_fn](conf._param);
} else {
return p$.find(_selector)[_fn]();
}
}
let ret = {};
let ppSelector = pSelector.concat([conf._parent || '']);
Object.keys(conf).forEach(key => {
if( !/^_/.test(key) ) {
ret[key] = parseConf(p$, conf[key], ppSelector);
}
});
return ret;
}
let isArray = false;
if( conf instanceof Array ) {
let itemConf = Object.assign({}, conf[0]);
let ret = [];
let hasOtherProp = false;
Object.keys(itemConf).forEach(key => {
if( /^[^_]/.test(key) ) {
hasOtherProp = true;
}
});
// 列表为简单字符串
if( !hasOtherProp ) {
let _selector = [_parent, itemConf._parent, itemConf._selector].join(' ');
p$.find(_selector).each(function() {
let _fn = itemConf._fn || 'html';
if( itemConf._param ) {
ret.push($(this)[_fn](itemConf._param));
} else {
ret.push($(this)[_fn]());
}
});
return ret;
}
// 列表为复杂对象
_parent += ' ' + itemConf._parent;
delete itemConf._parent;
// 列表必须有 _parent
p$.find(_parent).each(function(){
let p$ = $(this);
ret.push(parseConf(p$, itemConf, []));
});
return ret;
}
};