$img.load(function(){ var ww=$img.width(); var hh=$img.height();这里重新获取一些$img对象试试看。如果你只是使用以前的对象的话,有些信息就是固定的,当页面上的信息改动时,这个对象里面的信息时不变的。所以当load成功后,再去重新获取一下这个对象。试试呗,我是没有测试的~~
做了一个测试,可能与你的设想不同 但图片加载还是必须独立完成的,你参考一下<script src="jquery-1.8.3.min.js" type="text/javascript"></script> <script> $(function(){ var currentPosition = 0; var arr = [ "http://avatar.csdn.net/6/1/2/1_xiyaopo01.jpg", "http://material.mediav.com/galileo/20140730/98a353ab8ed02fd2de0712a08db7cda1.jpg", "http://material.mediav.com/galileo/20140730/605cc193adc144a57851cff365f8eaab.jpg", "http://avatar.csdn.net/6/1/2/1_xiyaopo01.jpg", "http://material.mediav.com/galileo/20140730/98a353ab8ed02fd2de0712a08db7cda1.jpg", "http://material.mediav.com/galileo/20140730/605cc193adc144a57851cff365f8eaab.jpg" ]; function imgload(target) { $('<img>').attr('src', arr[currentPosition]+'?'+Math.random()).load(function() { var w = this.width; var h = this.height; $('#a').html(w + ' x ' + h); var p = { "width" : w }; if(w > h) p = { "width" : 150 }; if(w > h) p = { "height" : 150 }; $(target).attr('src', $(this).attr('src')).attr(p); }); currentPosition = (currentPosition + 1) % arr.length; } $('#b').click(function() { imgload('#im'); }); imgload('#im'); }); </script> </head> <body> <div id="slidesContainer"> <div id="a"></div> <input type=button id="b" value='+'> <div class="slide"> <img id='im' src="" alt="" /> </div> </div> <div id="zhanwei"></div> </body> </html>
var ww=$img.width(); var h=$img.height(); 这两行代码,取的就是页面上图片的宽跟高,每次加载图片的时候,图片的路径虽然改变了,但是这个图片节点还在并且已经被固定死了大小(上一张图片判断出结果并且已经体现在页面上了),但实际上你要判断的是这张图片本身的宽跟高所以这里要改成 var ww=this.width; var hh=this.height;问题就出在,你实际想取的是图片本身的尺寸,但是你的代码取的是图片节点的尺寸。
var ww=$img.width();
var hh=$img.height();这里重新获取一些$img对象试试看。如果你只是使用以前的对象的话,有些信息就是固定的,当页面上的信息改动时,这个对象里面的信息时不变的。所以当load成功后,再去重新获取一下这个对象。试试呗,我是没有测试的~~
但图片加载还是必须独立完成的,你参考一下<script src="jquery-1.8.3.min.js" type="text/javascript"></script>
<script>
$(function(){
var currentPosition = 0;
var arr = [
"http://avatar.csdn.net/6/1/2/1_xiyaopo01.jpg",
"http://material.mediav.com/galileo/20140730/98a353ab8ed02fd2de0712a08db7cda1.jpg",
"http://material.mediav.com/galileo/20140730/605cc193adc144a57851cff365f8eaab.jpg",
"http://avatar.csdn.net/6/1/2/1_xiyaopo01.jpg",
"http://material.mediav.com/galileo/20140730/98a353ab8ed02fd2de0712a08db7cda1.jpg",
"http://material.mediav.com/galileo/20140730/605cc193adc144a57851cff365f8eaab.jpg"
]; function imgload(target) {
$('<img>').attr('src', arr[currentPosition]+'?'+Math.random()).load(function() {
var w = this.width;
var h = this.height;
$('#a').html(w + ' x ' + h);
var p = { "width" : w };
if(w > h) p = { "width" : 150 };
if(w > h) p = { "height" : 150 };
$(target).attr('src', $(this).attr('src')).attr(p);
});
currentPosition = (currentPosition + 1) % arr.length;
}
$('#b').click(function() {
imgload('#im');
});
imgload('#im');
});
</script>
</head>
<body>
<div id="slidesContainer">
<div id="a"></div>
<input type=button id="b" value='+'>
<div class="slide">
<img id='im' src="" alt="" />
</div>
</div>
<div id="zhanwei"></div>
</body>
</html>
var h=$img.height();
这两行代码,取的就是页面上图片的宽跟高,每次加载图片的时候,图片的路径虽然改变了,但是这个图片节点还在并且已经被固定死了大小(上一张图片判断出结果并且已经体现在页面上了),但实际上你要判断的是这张图片本身的宽跟高所以这里要改成
var ww=this.width;
var hh=this.height;问题就出在,你实际想取的是图片本身的尺寸,但是你的代码取的是图片节点的尺寸。
不知你有没有运行试试,当开始宽>高是没问题,当有一张高>宽后,就都四方形了,150*150