working demo without window load resize
但是加载调整大小功能中的相同代码无法正常工作。
$(window).on('load resize', function(){
$('div').wrapAll('<div class="cc" />');
$('.cc div').wrap('<div class="group" />');
var groupLength = $('.cc .group').length;
var groups = $('.cc .group');
if(groupLength == 2){
groups.css('width','50%');
} else if(groupLength == 3){
groups.css('width','33.33%');
} else {
groups.css('width','10%');
}
});
你可能会说它在调整大小时有效。但显然它没有负载,为什么呢?那么,可能有一个很好的方法来处理这个问题?
答案 0 :(得分:0)
这是因为默认情况下,小提琴程序会在window.load处理程序中添加脚本,因此在脚本执行时,window.load事件已经被触发,因此处理程序不会再次执行。
在左侧面板的第二个下拉列表中选择No Wrap
$(window).on('load resize', function () {
$('div').wrapAll('<div class="cc" />');
$('.cc div').wrap('<div class="group" />');
var groupLength = $('.cc .group').length;
var groups = $('.cc .group');
if (groupLength == 2) {
groups.css('width', '50%');
} else if (groupLength == 3) {
groups.css('width', '33.33%');
} else {
groups.css('width', '10%');
}
});
演示:Fiddle
window.load
事件不像document.ready
处理程序那样工作,即使事件已经被触发,它也会调用处理程序方法。
答案 1 :(得分:0)
您可以在页面加载时触发resize()
,因为默认情况下jsFiddle
已将您的代码包装在$(window).load(function() {...});
内:
$(window).on('load resize', function(){
$('div').wrapAll('<div class="cc" />');
$('.cc div').wrap('<div class="group" />');
var groupLength = $('.cc .group').length;
var groups = $('.cc .group');
if(groupLength == 2){
groups.css('width','50%');
} else if(groupLength == 3){
groups.css('width','33.33%');
} else {
groups.css('width','10%');
}
}).resize(); // <-- Here
<强> Updated Fiddle 强>