如果可以,我有两个请求。
最不重要,但我会非常喜欢您对我的代码的看法。任何方式来改善它。使它更便携/更健壮等?
似乎在创建“新”时代码不能完全正常工作。我的猜测是我并没有真正创建一个有效的对象。我做错了什么。
这在尝试创建新对象时无效。
var ll_port2 = New ll_port;
ll_port2.init({'aa':'#_div1','bb':'#_div2','cc':'1000'}); <-- no work
如果我从未制作新项目,那就有效,ala:
ll_port.init({'aa':'#_div1','bb':'#_div2','cc':'1000'}); <-- works
以下代码:
var ll_port = {
items:{
outside: /billabong|newage/,
},
assign: function(){
ccont = this.items.aa;
if (typeof $(ccont) === 'object' && $(ccont).css('z-index') && $(ccont).css('z-index') != this.items.cc) {
$(ccont).css('zIndex','').css('zIndex', this.items.zi);
}
},
closeit:function(){
if($(this.items.bb).length && $(this.items.bb).is(':visible')){
$(this.items.bb).hide();
}
},
strL: function(){
var _self = this;
$("body :not(" + _self.items.aa + ")")
.mousedown(function(event){
event.stopPropagation();
_self.closeit();
_self.assign();
});
$('iframe').live('mouseover',
function () {
if(_self.items.outside.test($(this).attr('src'))){
_self.closeit();
}
});
},
init: function(data){
$.extend(this.items, data);
this.strL();
var _self = this;
setTimeout(function(){
_self.assign();
}, 1500);
}
};
ll_port.init({'aa':'#_div1','bb':'#_div2','cc':'1000'});
答案 0 :(得分:2)
New
(旁边的拼写错误,应该是new
)应仅用于function
s而不是对象。
这些函数应该是构造函数。
new运算符创建一个用户定义的对象类型的实例,或者一个具有构造函数的内置对象类型的实例。
答案 1 :(得分:2)
你需要使ll_port
成为一个函数,而不是一个对象。
var ll_port = function(){
//... all your stuff
this.items = {outside: /billabong|newage/};
}
然后您可以使用var ll_port2 = new ll_port()