【问题标题】:How to get image size with jquery (Chrome, Safari...)如何使用 jquery 获取图像大小(Chrome、Safari ......)
【发布时间】:2017-01-13 17:21:25
【问题描述】:

我是 jquery 初学者,我需要通过 jquery 获取图像的高度。 这是我使用的代码:

$(document).ready(function ($) { 
  var height = $('#testor').height();
   $('.slider-container').css("height", height);
});

这是html代码:

<div class="slider-container">
<button type="button" id="slider-left">Left</button>
<button type="button" id="slider-right">Right</button>
<div class="slider-image" ><img src="http://xxxx.jpg"   class="alignnone size-medium wp-image-1558 testor" id="testor"  /></div>

<div class="slider-image"><img src="http://xxx.jpg"  class="alignnone size-medium wp-image-1557 testor" /></div>

<div class="slider-image"><img src="http://xxx.jpg"  class="alignnone size-medium wp-image-1556 testor" /></div>
</div>

还有css:

.slider-image {
position: absolute;
width: 100%;
}

.slider-image img{
width: 100%;
height: auto;
}

.inline-block {
display: inline-block;
}

.slider-container {
position:relative;
width: 100%;
overflow: hidden;
}

#slider-left {
position: absolute;
top: 50%;
z-index: 1;
}

#slider-right {
position: absolute;
top: 50%;
right: 0;
z-index: 1;
}

它在 Firefox 和 IE 上运行良好,但在 Chrome 和 Safari 上却不行。 发现是webkitbrowser的问题。

通常建议使用 $(window).load 而不是 $(document).ready ,但这也不起作用。

有没有人知道如何解决它。我试了两天想找到解决办法,现在不知道该怎么办。

最好的问候 神话

【问题讨论】:

  • 你能在问题中加入htmlcss吗?

标签: javascript jquery google-chrome image-size


【解决方案1】:
$(document).ready(function ($) { 
  var myimage = document.getElementById("testor");
  var w = myimage.width;
  var h = myimage.height;
//Assign the variable to your jquery css
$(".slider-container").css("height",h);
});

JSfiddle

【讨论】:

  • 你能用有效的图像源更新你的代码还是只编辑上面的小提琴并替换你的图像源
【解决方案2】:

load 事件附加到&lt;img&gt; 元素.ready();在load 事件处理程序中调用.height(),因为如果在load 事件完成之前调用.height() 并且可能返回0,则元素可能不会完全加载

.slider-image {
  position: absolute;
  width: 100%;
}
.slider-image img {
  width: 100%;
  height: auto;
}
.inline-block {
  display: inline-block;
}
.slider-container {
  position: relative;
  width: 100%;
  overflow: hidden;
}
#slider-left {
  position: absolute;
  top: 50%;
  z-index: 1;
}
#slider-right {
  position: absolute;
  top: 50%;
  right: 0;
  z-index: 1;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js">
</script>
<script>
  $(document).ready(function($) {
    $('#testor').on("load", function() {
      var height = $(this).height();
      console.log(this.complete);
      alert(height);
      $('.slider-container').css("height", height);
      console.log(".slider-container height:",
                  $('.slider-container').css("height"));
    })
  });
</script>
<div class="slider-container">
  <button type="button" id="slider-left">Left</button>
  <button type="button" id="slider-right">Right</button>
  <div class="slider-image">
    <img src="http://lorempixel.com/100/100/" class="alignnone size-medium wp-image-1558 testor" id="testor" />
  </div>

  <div class="slider-image">
    <img src="" class="alignnone size-medium wp-image-1557 testor" />
  </div>

  <div class="slider-image">
    <img src="" class="alignnone size-medium wp-image-1556 testor" />
  </div>
</div>

【讨论】:

  • @MythosM 你在 stacksnppets 尝试过javascript 吗?
  • 是的。我被打断了,所以我无法立即检查。非常感谢。它适用于 sn-p。 $('#testor').on("load", function() {...非常感谢。:)
猜你喜欢
  • 2011-07-11
  • 2013-12-16
  • 2011-06-25
  • 2012-08-28
  • 2023-03-09
  • 1970-01-01
  • 1970-01-01
  • 2012-06-04
  • 2012-04-20
相关资源
最近更新 更多