gpt4 book ai didi

javascript - jquery 窗口加载并调整大小未运行

转载 作者:太空宇宙 更新时间:2023-11-04 15:43:43 25 4
gpt4 key购买 nike

我有这段代码,用于显示合作伙伴 Logo 的响应式图像 slider 。

这就是它的样子。 https://i.scrny.me/yaOn.gif

有时,它会随机停止工作,我刷新页面几次后它会再次工作,所以我不确定问题是什么。这就是它停止工作时的样子。 https://i.scrny.me/ot1N.png

这是我为此使用的 JavaScript 代码。

$(function() {
var partnerSlider = $('.partners'),
partners = partnerSlider.children().length,
width, partnerHeight, containerWidth, windowSize, columns = 4;

//Making it responsive and all
$(window).on("load resize", function(){
containerWidth = $('.container').width();
windowSize = $(window).width();
if (windowSize >= 992) {
columns = 4;
}
else if (windowSize >= 768 && windowSize < 992) {
columns = 3;
}
else if (windowSize < 768) {
columns = 2;
}

$('#partners').css('width', containerWidth);
$('.partner').css('width', containerWidth / columns);
width = containerWidth / columns;
partnerHeight = $('.partner > img').height() + 20;
partnerSlider.css({width: (partners * width), height: partnerHeight});
});

var rotating = true;
var sliderSpeed = 4000;
var seePartners = setInterval(slidePartners, sliderSpeed);

$(document).on({
mouseenter: function () {
rotating = false;
},
mouseleave: function () {
rotating = true;
}
}, '.partners');

function slidePartners() {
if (rotating !== false) {
var first = $('.partner:first');
first.animate({'margin-left': '-' + width + 'px'}, 1000, function () {
first.remove().css({'margin-left': '0px'});
$('.partner:last').after(first);
});
}
}

});

据我设法找出问题出在这部分。

$(window).on("load resize", function(){
containerWidth = $('.container').width();
windowSize = $(window).width();
if (windowSize >= 992) {
columns = 4;
}
else if (windowSize >= 768 && windowSize < 992) {
columns = 3;
}
else if (windowSize < 768) {
columns = 2;
}

$('#partners').css('width', containerWidth);
$('.partner').css('width', containerWidth / columns);
width = containerWidth / columns;
partnerHeight = $('.partner > img').height() + 20;
partnerSlider.css({width: (partners * width), height: partnerHeight});
});

我相信该函数应该在页面加载或调整大小时运行,但有时加载页面时它不会运行,因此它不会自动分配图像和容器的大小。

这是 HTML

<div class="container wow fadeIn" style="overflow:hidden;">
<h2>Partners</h2>
<div class="partners">
<div class="partner">
<img src="assets/images/sponsor.png" class="img-responsive"/>
</div>
<div class="partner">
<img src="assets/images/sponsor.png" class="img-responsive"/>
</div>
<div class="partner">
<img src="assets/images/sponsor.png" class="img-responsive"/>
</div>
<div class="partner">
<img src="assets/images/sponsor.png" class="img-responsive"/>
</div>
<div class="partner">
<img src="assets/images/sponsor.png" class="img-responsive"/>
</div>
<div class="partner">
<img src="assets/images/sponsor.png" class="img-responsive"/>
</div>
<div class="partner">
<img src="assets/images/sponsor.png" class="img-responsive"/>
</div>
</div>
</div>

任何帮助将不胜感激。

最佳答案

我相信您的代码问题与您所拥有的 jQuery 版本有关。在 jQuery 3.x.x 版本中的某个时候(不确定具体时间)进行了更改以使 on-ready 事件处理程序异步运行。这意味着在某些情况下,load事件在 ready 之前完成事件被触发。在您的情况下,这成为一个问题,因为如果 load事件已在 ready 之前触发称为 window.load事件处理程序在 jQuery 中注册 document.ready()不会运行。此顺序可能取决于许多因素,例如页面加载速度、图像缓存......,这就是您看到问题发生不一致的原因。

解决方案是更新您拥有的代码并移动 $(window).('on') docuemnt.ready 函数外部的事件处理程序:$(function(){}) 。另外,由于我没有在您提供的 jsFiddle 中看到它,请确保您的 js 代码的脚本嵌入在 <body> 中。元素,因为这是放置影响页面呈现的代码的理想位置。

我已经更新了提供的 jsfiddle 以包含这些更改,请看一下:

<强> Updated jsFiddle

关于javascript - jquery 窗口加载并调整大小未运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43700085/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com