返回信息流在其他js文件中就以.slot().**方式调用,但这样调用会报未定义的错误, 如:if ($.slot().custom.SmsUnreadFirst),但别人的代码中这样使用却没错误,求大神指导
代码如下:
function Slot() {
var slots = {};
var events = {};
var eid = 0;
this.document = window.document;
function apply(n, v) {
var f = n.attr('format');
if (f && (f = this[f])) v = f.call(n, v);
if (v == null) v = "";
if (n.is('input') || n.is('select')) {
switch (n.attr('type')) {
case 'radio': case 'checkbox':
$('input[name=' + n.attr('name') + "][value='" + v + "']", this.document).attr('checked', true); break;
default: n.val(v);
}
}
else n.html(v);
}
function toggle(s) {
for(var n in s) {
var e = s[n];
if (n == 'index' || n == 'custom') continue;
if (typeof(e) == 'object') {
for(var k in e) apply.call(this, $('#' + n + '\\.' + k, this.document), e[k]);
}
else apply.call(this, $('#' + n, this.document), e);
}
}
this.slot = function(s, f, trigger) {
// get
if (!s) return slots;
// special
if (s === this) {
if (f) toggle.call(this, f);
else {
for (var k in events) {
for (var i = events[k].length - 1; i >= 0; --i) {
if (events[k][i][0] === s)
events[k].splice(i, 1);
}
}
}
return slots;
}
// set
if (f) {
// set callback
if (typeof f == 'function') {
s = s.split(' ');
var e1 = false;
for (var k in s) {
if (!events[s[k]]) events[s[k]] = [];
var ar = [this, f, s.length > 0, eid];
events[s[k]].push(ar);
if (slots[s[k]] != null) e1 = true;
}
if (trigger && e1) f.call(this, slots);
++eid;
return slots;
}
// set by file and no toggle
else {
if (slots[s]) return slots[s];
slots[s] = loadScriptFrag(f);
if (slots[s][s]) slots[s][s]();
return slots[s];
}
}
// get by string
else if (typeof s == 'string') {
if (s.indexOf('.') == -1) return slots[s];
else {
try {
return eval('slots.' + s);
} catch (e) { return null; }
}
}
// set by object and toggle
if (s != slots) {
for(var n in s) slots[n] = s[n];
var es = {};
for(var n in s) {
for (var k in events[n]) {
es[events[n][k][3]] = [events[n][k], s[n]];
}
}
for (var n in es)
es[n][0][1].call(es[n][0][0], es[n][0][2] ? slots : es[n][1]);
}
toggle.call(this === $ ? window : this, s);
return s;
}
}
if (!window.Slot) window.Slot = Slot;
这是一条镜像帖。来源:北邮人论坛 / java / #30834同步于 2014/7/6
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
求指教几个javascript的问题
crazier
2014/7/6镜像同步8 回复
订阅后,新回复会通过你的通知中心匿名送达。
8 条回复
突然让我想起来 雷锋和雷锋塔的关系
【 在 crazier (ston) 的大作中提到: 】
: 在其他js文件中就以.slot().**方式调用,但这样调用会报未定义的错误, 如:if ($.slot().custom.SmsUnreadFirst),但别人的代码中这样使用却没错误,求大神指导
: 代码如下:
: function Slot() {
: ...................
你这是js+jquery的代码啊,别人是不是比你多引用了jquery插件?
像这种:<script src="jquery.xxxx"></script>
【 在 crazier 的大作中提到: 】
: 在其他js文件中就以.slot().**方式调用,但这样调用会报未定义的错误, 如:if ($.slot().custom.SmsUnreadFirst),但别人的代码中这样使用却没错误,求大神指导
: 代码如下:
: function Slot() {
: ...................
没有,,,还有可能是其他什么问题么??谢谢。。
【 在 guoqu211 的大作中提到: 】
: 你这是js+jquery的代码啊,别人是不是比你多引用了jquery插件?
: 像这种:<script src="jquery.xxxx"></script>