浮动 div 的高度第一次为零,但第二次正常
Height of floating divs are zero at first time, but ok at second time
我有一个 jQuery mobile
站点,我想显示三个浮动 divs。
因为我不知道div的内容,所以不知道它们的高度,但是我想让它们等高。
我想,这很简单,下面的代码:
var maxHeight = 0;
var columns = $('.column');
console.log(columns);
$.each(columns, function (idx, obj) {
console.log('Outter: ' + $(obj).outerHeight() + "\nInner: " + $(obj).innerHeight() + '\nRegular: ' + $(obj).height() + "\n-----------------\n") ;
if ($(obj).outerHeight() > maxHeight) {
maxHeight = $(obj).outerHeight();
}
});
console.log(maxHeight);
$.each(columns, function (idx, obj) {
$(obj).outerHeight(maxHeight);
});
但jQuery mobile
世界总有惊喜。
当我第一次下载页面时,divs 只是显示填充的高度,并且在控制台中有很奇怪的东西。
页面刷新后,一切正常,如我所料。
如果这还不够,Firefox 和 Chrom 会在页面刷新后显示不同的值。第一个div有一张图片
chrome 和 firefox 中第一页加载的输出(第二部分发生两次):
Outter: 0
Inner: 0
Regular: 0
-----------------
jquery.min.js line 2 > eval:19:1
Outter: 0
Inner: 0
Regular: -20
-----------------
jquery.min.js line 2 > eval:19:1
0
第二次,页面刷新后
Outter: 342
Inner: 342
Regular: 342
-----------------
14g100312503-webkamera_kabelell-h5683.html:284:1
Outter: 112
Inner: 112
Regular: 92
-----------------
14g100312503-webkamera_kabelell-h5683.html:284:1
Outter: 275
Inner: 275
Regular: 255
-----------------
14g100312503-webkamera_kabelell-h5683.html:284:1
342
而 chrome 显示第一个 div 为 16。
谁能解释一下,为什么会这样?
很遗憾,我无法向您展示实际示例。这是 jsFiddle link,但在 fiddle 中有效。
EDIT 我忘了提到,这是文件中的内联 javascript,其中 div 不是来自 [=15] =] 文件。因为,它将它写入控制台,我敢肯定,它是 运行.
还有什么是strage,(写这个的时候才意识到post),第一次是jquery.min.js line 2 > eval:19:1
,第二次是14g100312503-webkamera_kabelell-h5683.html:284:1
在 jQuery 移动设备中,要获得高度,您应该 运行 您在包含列的特定页面的 pageshow 事件中的代码:
$(document).on("pageshow","#page1", function(){
var maxHeight = 0;
var columns = $('.column');
$.each(columns, function (idx, obj) {
console.log('Outter: ' + $(obj).outerHeight() + "\nInner: " + $(obj).innerHeight() + '\nRegular: ' + $(obj).height() + "\n-----------------\n") ;
if ($(obj).outerHeight() > maxHeight) {
maxHeight = $(obj).outerHeight();
}
});
console.log(maxHeight);
$.each(columns, function (idx, obj) {
$(obj).outerHeight(maxHeight);
});
});
或使用 pagecontainer 小部件
$(document).on("pagecontainershow", function (event, ui) {
if (ui.toPage.prop("id") == "page1") {
var maxHeight = 0;
...
Updated FIDDLE
我有一个 jQuery mobile
站点,我想显示三个浮动 divs。
因为我不知道div的内容,所以不知道它们的高度,但是我想让它们等高。
我想,这很简单,下面的代码:
var maxHeight = 0;
var columns = $('.column');
console.log(columns);
$.each(columns, function (idx, obj) {
console.log('Outter: ' + $(obj).outerHeight() + "\nInner: " + $(obj).innerHeight() + '\nRegular: ' + $(obj).height() + "\n-----------------\n") ;
if ($(obj).outerHeight() > maxHeight) {
maxHeight = $(obj).outerHeight();
}
});
console.log(maxHeight);
$.each(columns, function (idx, obj) {
$(obj).outerHeight(maxHeight);
});
但jQuery mobile
世界总有惊喜。
当我第一次下载页面时,divs 只是显示填充的高度,并且在控制台中有很奇怪的东西。
页面刷新后,一切正常,如我所料。
如果这还不够,Firefox 和 Chrom 会在页面刷新后显示不同的值。第一个div有一张图片
chrome 和 firefox 中第一页加载的输出(第二部分发生两次):
Outter: 0
Inner: 0
Regular: 0
-----------------
jquery.min.js line 2 > eval:19:1
Outter: 0
Inner: 0
Regular: -20
-----------------
jquery.min.js line 2 > eval:19:1
0
第二次,页面刷新后
Outter: 342
Inner: 342
Regular: 342
-----------------
14g100312503-webkamera_kabelell-h5683.html:284:1
Outter: 112
Inner: 112
Regular: 92
-----------------
14g100312503-webkamera_kabelell-h5683.html:284:1
Outter: 275
Inner: 275
Regular: 255
-----------------
14g100312503-webkamera_kabelell-h5683.html:284:1
342
而 chrome 显示第一个 div 为 16。
谁能解释一下,为什么会这样?
很遗憾,我无法向您展示实际示例。这是 jsFiddle link,但在 fiddle 中有效。
EDIT 我忘了提到,这是文件中的内联 javascript,其中 div 不是来自 [=15] =] 文件。因为,它将它写入控制台,我敢肯定,它是 运行.
还有什么是strage,(写这个的时候才意识到post),第一次是jquery.min.js line 2 > eval:19:1
,第二次是14g100312503-webkamera_kabelell-h5683.html:284:1
在 jQuery 移动设备中,要获得高度,您应该 运行 您在包含列的特定页面的 pageshow 事件中的代码:
$(document).on("pageshow","#page1", function(){
var maxHeight = 0;
var columns = $('.column');
$.each(columns, function (idx, obj) {
console.log('Outter: ' + $(obj).outerHeight() + "\nInner: " + $(obj).innerHeight() + '\nRegular: ' + $(obj).height() + "\n-----------------\n") ;
if ($(obj).outerHeight() > maxHeight) {
maxHeight = $(obj).outerHeight();
}
});
console.log(maxHeight);
$.each(columns, function (idx, obj) {
$(obj).outerHeight(maxHeight);
});
});
或使用 pagecontainer 小部件
$(document).on("pagecontainershow", function (event, ui) {
if (ui.toPage.prop("id") == "page1") {
var maxHeight = 0;
...
Updated FIDDLE