13

在我的代码中,我正在为 jcarousel 创建一个 ul li,即它的数据列表(例如照片列表)

当照片数量超过 4 张时,jcarousel 启用水平滚动以查看接下来的 4 张照片。

问题:当我在 chrome 中运行代码时,即使照片数量超过 4,水平滚动仍然处于禁用状态,在其他浏览器中它可以完美运行..

下面是导入 jquery 文件的代码:

     function SetCarousel() {

            $.getScript('<%=Html.LibUrl("jplugins/jquery.jcarousel.pack.js")%>', 
function(result)
                {

                jQuery('#CarouselUL').jcarousel({
                    visible: 4
                });
            });

        }

我试过引用.js文件@页面顶部(aspx)没有工作..甚至更糟

请帮忙

4

7 回答 7

15

我通过注释掉指定 Safari 的代码在我正在开发的网站上修复了这个问题;由于某种原因,他们进行的修复似乎已经过时了。我正在使用 jQuery 1.3.2。

这是我剥离的代码:

jquery.carousel.js:第 184 行附近

    /*if ($.browser.safari) {
      this.buttons(false, false);
      $(window).bind('load', function() { self.setup(); });
    } else */
      this.setup();

jquery.carousel.js:第 858 行附近

            /*if (p == 'marginRight' && $.browser.safari) {
            var old = {'display': 'block', 'float': 'none', 'width': 'auto'}, oWidth, oWidth2;

            $.swap(el, old, function() { oWidth = el.offsetWidth; });

            old['marginRight'] = 0;
            $.swap(el, old, function() { oWidth2 = el.offsetWidth; });

            return oWidth2 - oWidth;
            }*/

希望此修复程序可以帮助您和其他遇到问题的人!

于 2010-03-02T09:56:55.277 回答
1

这太棒了我的问题已经解决了谢谢jsims281

就我而言,我使用过

jquery.jcarousel.min

注释的代码是第 134 到 139 行

/*if(!q&& i.browser.safari){
            this.buttons(false,false);
            i(window).bind("load.jcarousel",function(){
                g.setup()
                })
            }else */ this.setup()
            };

和第 470 到 484 行

 /*if(c=="marginRight"&&i.browser.safari){
            var d={
                display:"block",
                "float":"none",
                width:"auto"
            },e,f;
            i.swap(b,d, function(){
                e=b.offsetWidth
                });
            d.marginRight=0;
            i.swap(b,d,function(){
                f=b.offsetWidth
                });
            return f-e
            }*/
于 2011-05-04T14:49:44.173 回答
1

我尝试了 1 号解决方案,它奏效了。好人,非常感谢。我刚刚评论了以下几行:

/*if ($.browser.safari) {
  this.buttons(false, false);
  $(window).bind('load', function() { self.setup(); });
} else */
  this.setup();
于 2010-07-16T01:52:48.210 回答
1

在 0.2.9 版本中,这对我有用。
我把缩小版扔到http://jsbeautifier.org 并在第 95 行更改了以下内容

}, null !== this.options.initCallback && this.options.initCallback(this, "init"), !c && d.isSafari() ? (this.buttons(!1, !1), a(window).bind("load.jcarousel", function ()
{
l.setup()
})) : this.setup()

    }, null !== this.options.initCallback && this.options.initCallback(this, "init"), !c /*&& d.isSafari() ? (this.buttons(!1, !1), a(window).bind("load.jcarousel", function ()
    {
        l.setup()
    })) :*/ this.setup()
于 2013-11-08T14:00:35.303 回答
0

我想你的意思是这个jCarousel

如果是,您使用的是什么 jQuery 版本?

因为这个插件很久没有更新了。当前版本是 2008 年 4 月 7 日的 0.2.3,此版本的变更日志显示

版本 0.2.3 - 2008-04-07 更新
- jQuery 到版本 1.2.3。已修复
- (希望如此)Safari 的问题

我记得这个插件在从 1.2.6 开始的新 jQuery 版本中存在一些问题(今天我们已经是 1.3.2)。

您还必须注意,当前版本的 jCarousel 出现在 Google Chrome 的第一个版本之前(0.2 版于 2008 年 9 月 8 日发布)。

于 2010-01-04T11:12:03.560 回答
0

非常好... jquery.carousel.js:第 184 行附近

/*if ($.browser.safari) { this.buttons(false, false); $(window).bind('load', function() { self.setup(); }); } 其他 */ this.setup();

jquery.carousel.js:第 858 行附近

      /*if (p == 'marginRight' && $.browser.safari) {
        var old = {'display': 'block', 'float': 'none', 'width': 'auto'}, oWidth, oWidth2;

        $.swap(el, old, function() { oWidth = el.offsetWidth; });

        old['marginRight'] = 0;
        $.swap(el, old, function() { oWidth2 = el.offsetWidth; });

        return oWidth2 - oWidth;
        }*/

这工作得很好....谢谢....

于 2010-10-04T18:56:09.253 回答
0

0.28 版中似乎只剩下一个条件,它会导致完成设置的延迟

基于 Jsims281(感谢 Jsims),我搜索了 jCarousel v0.28 的最小化版本,发现该行如下:

!m&&g.browser.safari?(this.buttons(!1,!1),g(window).bind("load.jcarousel",function(){e.setup()})):

应将上述评论为:

/*!m&&g.browser.safari?(this.buttons(!1,!1),g(window).bind("load.jcarousel",function(){e.setup()})):*/
于 2011-12-02T16:07:13.247 回答