$(window).load(function(){
alert(typeof $.fn.init_deps);
});
$(document).ready(function(){
/* Departments switcher */
$.fn.init_deps = function(s){
var o = {
deps:false,
cats:false
}
$.extend(o,s);
if(!s.deps || !s.cats) {return;}
return this.each(function(){
var select = $('<select id="department" name="department"></select>')
.appendTo(this)
.departments(s)
.change(function(){
var select = $('select#category');
select.categories({cats:s.cats,current_dep:$(this).val()});
var p_width = select.parent().outerWidth();
var ch_width = select.outerWidth();
select.parent().css('width',p_width+'px')
.find('select').css('width',(ch_width + 8)+'px')
.parent().find('span').css('width',(p_width - 20)+'px');
$.uniform.update(select);
});
var p_width = select.parent().outerWidth();
var ch_width = select.outerWidth();
select.uniform({selectClass:'selector uni1'})
.parent().css('width',p_width+'px')
.find('select').css('width',(ch_width + 8)+'px')
.parent().find('span').css('width',(p_width - 20)+'px');
});
}
});
警报在IE7中返回undefined,但在所有其他浏览器中它返回函数。
帮助,无法弄清问题在哪里。
答案 0 :(得分:2)
窗口onload可能会在IE中绑定函数之前触发。您应该在文档准备好之前定义$ .fn 。
$(window).load(function(){
alert(typeof $.fn.init_deps);
});
(function($){
$.fn.init_deps = function(s){
var o = {
deps:false,
cats:false
}
$.extend(o,s);
if(!s.deps || !s.cats) {return;}
return this.each(function(){
var select = $('<select id="department" name="department"></select>')
.appendTo(this)
.departments(s)
.change(function(){
var select = $('select#category');
select.categories({cats:s.cats,current_dep:$(this).val()});
var p_width = select.parent().outerWidth();
var ch_width = select.outerWidth();
select.parent().css('width',p_width+'px')
.find('select').css('width',(ch_width + 8)+'px')
.parent().find('span').css('width',(p_width - 20)+'px');
$.uniform.update(select);
});
var p_width = select.parent().outerWidth();
var ch_width = select.outerWidth();
select.uniform({selectClass:'selector uni1'})
.parent().css('width',p_width+'px')
.find('select').css('width',(ch_width + 8)+'px')
.parent().find('span').css('width',(p_width - 20)+'px');
});
}
})(jQuery);
答案 1 :(得分:1)
$ document.ready在不同浏览器中的工作方式不同。在IE中,它将绑定到windows onload
window.attachEvent( "onload", jQuery.ready );
因此,您不能指望document.ready块中的代码在onload块之前运行。