【问题标题】:Basic JQuery Slider getting stuck on second slide基本的 JQuery 滑块卡在第二张幻灯片上
【发布时间】:2014-02-01 01:47:09
【问题描述】:

我正在尝试在我的主页上修复此滑块:example.com。

滑块偶尔可以正常工作,但至少有 90% 的时间会卡在第二张幻灯片上(如果它超过了第二张幻灯片,那就完全没问题了)。我不得不猜测插件以某种方式崩溃了,因为滑动不起作用-图像仍然存在,您可以手动单击它们。

原来的站点在主目录中有很多无关的文件,所以我只复制了这个 URL 的主页。

这实际上是我在 StackOverflow 上的第一篇文章,我也是 JS 的初学者,所以我不确定这是否有帮助,但我会在下面发布 JS 代码,尽管它被“最小化”并且超级难读。

感谢您的帮助!

(function(a){a.fn.bjqs=function(b){var c={},d={width:700,height:300,animation:"fade",animationDuration:450,automatic:true,rotationSpeed:4e3,hoverPause:true,showControls:true,centerControls:true,nextText:"Next",prevText:"Prev",showMarkers:true,centerMarkers:true,keyboardNav:true,useCaptions:true},e=this,f=e.find(".bjqs"),g=f.children("li"),h=g.length,i=false,j=false,k=0,l=1,m=0,n=g.eq(k),o="forward",p="backward";c=a.extend({},d,b);g.css({height:c.height,width:c.width});f.css({height:c.height,width:c.width});e.css({height:c.height,width:c.width});g.addClass("bjqs-slide");if(c.showControls&&h>1){var q=a('<ul class="bjqs-controls"></ul>'),r=a('<li><a href="#" class="bjqs-next" class="controls">'+c.nextText+"</a></li>"),s=a('<li><a href="#" class="bjqs-prev" class="controls">'+c.prevText+"</a></li>");r.click(function(a){a.preventDefault();if(!i){A(o,false)}});s.click(function(a){a.preventDefault();if(!i){A(p,false)}});r.appendTo(q);s.appendTo(q);q.appendTo(e);if(c.centerControls){var t=r.children("a"),u=(e.height()-t.height())/2;r.children("a").css("top",u).show();s.children("a").css("top",u).show()}}if(c.showMarkers&&h>1){var v=a('<ol class="bjqs-markers"></ol>'),w,x,u;a.each(g,function(b,d){if(c.animType==="slide"){if(b!==0&&b!==h-1){w=a('<li><a href="#">'+b+"</a></li>")}}else{b++;w=a('<li><a href="#">'+b+"</a></li>")}w.click(function(c){c.preventDefault();if(!a(this).hasClass("active-marker")&&!i){A(false,b)}});w.appendTo(v)});x=v.children("li");x.eq(k).addClass("active-marker");v.appendTo(e);if(c.centerMarkers){u=(c.width-v.width())/2;v.css("left",u)}}if(c.keyboardNav&&h>1){a(document).keyup(function(a){if(!j){clearInterval(z);j=true}if(!i){if(a.keyCode===39){a.preventDefault();A(o,false)}else if(a.keyCode===37){a.preventDefault();A(p,false)}}if(j&c.automatic){z=setInterval(function(){A(o)},c.rotationSpeed);j=false}})}if(c.useCaptions){a.each(g,function(b,c){var d=a(c);var e=d.children("img:first-child");var f=e.attr("title");if(f){var g=a('<p class="bjqs-caption">'+f+"</p>");g.appendTo(d)}})}if(c.hoverPause&&c.automatic){e.hover(function(){if(!j){clearInterval(z);j=true}},function(){if(j){z=setInterval(function(){A(o)},c.rotationSpeed);j=false}})}if(c.animation==="slide"&&h>1){$first=g.eq(0);$last=g.eq(h-1);$first.clone().addClass("clone").removeClass("slide").appendTo(f);$last.clone().addClass("clone").removeClass("slide").prependTo(f);g=f.children("li");h=g.length;$wrapper=a('<div class="bjqs-wrapper"></div>').css({width:c.width,height:c.height,overflow:"hidden",position:"relative"});f.css({width:c.width*h,left:-c.width});g.css({"float":"left",position:"relative",display:"list-item"});$wrapper.prependTo(e);f.appendTo($wrapper)}var y=function(a){if(c.animation==="fade"){if(a===o){!n.next().length?m=0:m++}else if(a===p){!n.prev().length?m=h-1:m--}}if(c.animation==="slide"){if(a===o){m=l+1}if(a===p){m=l-1}}return m};if(c.automatic&&h>1){var z=setInterval(function(){A(o,false)},c.rotationSpeed)}g.eq(k).show();f.show();var A=function(a,b){if(!i){if(a){m=y(a)}else if(b&&c.animation==="fade"){m=b-1}else{m=b}i=true;if(c.animation==="fade"){if(c.showMarkers){x.eq(k).removeClass("active-marker");x.eq(m).addClass("active-marker")}r=g.eq(m);n.fadeOut(c.animationDuration);r.fadeIn(c.animationDuration,function(){n.hide();k=m;n=r;i=false})}else if(c.animation==="slide"){if(c.showMarkers){x.eq(l-1).removeClass("active-marker");if(m===h-1){x.eq(0).addClass("active-marker")}else if(m===0){x.eq(h-3).addClass("active-marker")}else{x.eq(m-1).addClass("active-marker")}}f.animate({left:-m*c.width},c.animationDuration,function(){if(m===0){l=h-2;f.css({left:-l*c.width})}else if(m===h-1){l=1;f.css({left:-c.width})}else{l=m}i=false})}}};return this}})(jQuery)

【问题讨论】:

  • 进一步研究,但似乎您还缺少一个 CSS 文件“GET nastynas.com/webfonts/MyFontsWebfontsKit.css 404 (Not Found)”,这是控制台中的错误。 - 虽然我不认为这是导致问题的原因。
  • 另外,当我尝试使用箭头滚动时,它似乎试图将我链接到您的 flavor.php 页面,该页面显然没有创建。另一个小错误
  • 您提出的第一个问题只是因为我只将主页的文件带到了这个示例 URL。第二个只是布局不好,松鼠图像上的链接向左稍微太宽了。如果您真的很小心,您可以单击右滑块箭头并避开该链接。谢谢参观!但正如你所说,我认为两者都与 JS 滑块无关。
  • 无论哪里出错都很难找到。我不是 javascript 方面的专家,尽管我知道自己的方式。似乎您正在使用的脚本仅在转一圈后就失败了。您可能想要获取该脚本的未缩小版本并开始在代码中的不同位置放置警报。如果警报没有触发 - 你知道那里有问题。
  • 你在哪里启动代码?我看到您正在链接它,但是是什么告诉 js 使用该元素?

标签: jquery slideshow


【解决方案1】:

您使用旧版本的 jQuery 有什么原因吗? (版本 1.6.2)

该版本已过期 2 年多 - bjqs 插件与该版本的 jQuery 不兼容。

如果您使用此旧版本没有任何特定原因,请更新到最新版本 (http://code.jquery.com/),滑块将正常工作。我把你网站的源码拉下来,在本地测试一下确认。

如果您出于某种原因需要继续使用 1.6.2,那么很遗憾,您将不得不使用与该 jQuery 版本兼容的其他插件。

希望有所帮助 - 感谢您使用 Basic jQuery Slider!

【讨论】:

  • 非常感谢约翰!我认为这可能是问题,但不知道如何去纠正它。不过我想通了,我现在已经准备好了。感谢您首次介绍如何使用 SO!
【解决方案2】:

欢迎来到!

我要说的第一件事是http://jsbeautifier.org/ 是你的朋友...它与缩小 js 的作用相反。

第二件事是,即使在美化了 js 之后,它仍然很难遵循。在插件/库有问题的情况下,我通常会更换而不是修复。您是否考虑过另一个幻灯片插件,例如Nivo Slider?它作为一个 jquery 插件免费提供(不要被付费的 wp 插件误导),很漂亮,而且很简单。

我知道这并不能回答您是什么导致了您的错误,但希望这是一个可行的解决方法!

【讨论】:

  • 谢谢乔恩!我确实通过谷歌搜索找到了该网站,但我不确定它的效果如何,所以只发布了原始代码。我以后会用的!如果我在这里无法得到答案,我一定会查看 Nivo Slider 并考虑将其关闭。再次感谢!
猜你喜欢
  • 1970-01-01
  • 2012-10-05
  • 1970-01-01
  • 2016-10-25
  • 2014-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多