欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

jquery 图像高度 css 的 height:auto 时 (高度也同理) 有时取不到 为0值 zero 有大用 有大大用

$(function(){
$('.little_selected_wrapper').find("[id^=little_]").each(function () {
var old_id = $(this).attr('id').replace('little_', '');
$(this).width($('#' + old_id).width() / 2);
$(this).height($('#' + old_id).height() / 2);
$(this).css({top: $('#' + old_id).position().top / 2, left: $('#' + old_id).position().left / 2});
console.log($('#' + old_id).attr('id'));
console.log("width" + $('#' + old_id).css('width'));
console.log("height" + $('#' + old_id).css('height'));
console.log("height()" + $('#' + old_id).height());
console.log("outerheight" + $('#' + old_id).outerHeight());
console.log("innerheight" + $('#' + old_id).innerHeight());

//$(this).left($('#'+old_id).left()/2);
           //$(this).top($('#'+old_id).top()/2);
//        console.log($(this).attr('id'));
//        console.log($('#'+old_id).attr('id'));
//        console.log($('#'+old_id).position().left);
//        console.log($('#'+old_id).css('left'));

       });
})

css 中 height为auto,这里 

$('#' + old_id).css('height')

可能是刚加载时执行这段代码,但是图像还未加载完, 

因为浏览器来不及计算这个图像的 高度,所以它的值就变成了 0 


把  $(function(){  改成了 window.onload 好像可以了

即代码如下:

    window.onload = function() {
$('.little_selected_wrapper').find("[id^=little_]").each(function () {
var old_id = $(this).attr('id').replace('little_', '');
$(this).width($('#' + old_id).width() / 2);
$(this).height($('#' + old_id).height() / 2);
$(this).css({top: $('#' + old_id).position().top / 2, left: $('#' + old_id).position().left / 2});
console.log($('#' + old_id).attr('id'));
console.log("width" + $('#' + old_id).css('width'));
console.log("height" + $('#' + old_id).css('height'));
console.log("height()" + $('#' + old_id).height());
console.log("outerheight" + $('#' + old_id).outerHeight());
console.log("innerheight" + $('#' + old_id).innerHeight());

//$(this).left($('#'+old_id).left()/2);
           //$(this).top($('#'+old_id).top()/2);
//        console.log($(this).attr('id'));
//        console.log($('#'+old_id).attr('id'));
//        console.log($('#'+old_id).position().left);
//        console.log($('#'+old_id).css('left'));
       });
};




Make sure the code is inside the $(window).load [not $(document).ready ]

$(window).load(function () {
    newhgt = $('#thetext1').find('div.rhs').css("background", "pink").height();
});
 $("_element name/id_").load(function() {
      $(this).height();
 });

来自  https://stackoverflow.com/questions/9292529/jquery-height-returns-0-on-a-visible-div-why



请检查你在DOM准备好时尝试获取高度,也就是说在window.onload函数中。

如果您的div元素为空且height为auto,则它将返回0.因此在加载完整页面之前,您的div可能为空。

例如:我想记住我的.elementDiv div的初始高度:

var initialHeight = [];
window.onload = function() {
$('.elementDiv').each(function(i) {
  initialHeight[i]=$(this).height();
  });
  // then use it
  }

当不在onload函数中时,我得到的高度都是0。

我希望这是原因,因为我没有看到任何其他东西..

来自  https://stackoverflow.com/questions/5667152/jquery-get-height-of-auto-height-element?lq=1

普通分类: