var j$ = jQuery.noConflict();
j$(document).ready(function(){
j$.fn.slideShow = function(timeOut){
var $slidecontainer = this;
this.children(':gt(0)').hide();
setInterval(function() {
$slidecontainer.children().eq(0).fadeOut(2000).next().fadeIn(2000).addClass('on').nextAll().removeClass('on').end().appendTo($slidecontainer);}, timeOut || 1000);
var imgheight = this.children('.on').outerHeight();
this.css('height', imgheight );
};
j$(function() {
j$('.slideshow').slideShow(7000);});
});
ほとんどの場合、上記のスクリプトはうまく機能します。唯一の問題は、画像の高さの css が親コンテナーに適用されていないことです。ブラウザコンソールでこれを試すと、完全に機能します。ページでスクリプトを呼び出すと、画像の高さが適用されません。しかし、それは他のすべてを行います。
これはhtmlです
<div id="slideshow" class="slideshow">
<img width="970" height="300" src="someimage.jpg" class="" >
<img width="970" height="300" src="someimage.jpg" class="" >
<img width="970" height="300" src="someimage.jpg" class="" >
<img width="970" height="300" src="someimage.jpg" class="" >
<img width="970" height="300" src="someimage.jpg" class="" >
</div>
以下が答えになりました。
var j$ = jQuery.noConflict();
j$.fn.slideShow = function (timeOut) {
var $slidecontainer = this;
$slidecontainer.children(':gt(0)').hide();
setInterval(function () {
$slidecontainer.children().eq(0).fadeOut(2000).next().fadeIn(2000).addClass('on').nextAll().removeClass('on').end().end().appendTo($slidecontainer);
}, timeOut || 1000);
var imgheight = $slidecontainer.children('img').first().outerHeight();
$slidecontainer.css('height', imgheight);
};
j$(window).load(function () {
j$('.slideshow').slideShow(7000);
});