代码之家  ›  专栏  ›  技术社区  ›  Justin

从jQuery 1.9.1迁移到1.10.1导致错误:对象没有方法

  •  2
  • Justin  · 技术社区  · 11 年前
    1. View my jsFiddle

    2. 将HTML预览调整为小宽度,并查看幻灯片的大小是否正确

    3. 将jQuery从1.9.1更改为1.10.1(在左窗格中),然后单击RUN

    4. 将HTML预览调整为小宽度或大宽度

    5. 打开控制台,看到错误: Object [object Object] has no method 'bjqs'

    我不知道是什么原因导致了这个1.10.1的问题。

    这个插件在resize函数中第二次被调用时,是否有什么东西阻止了它的工作?

    这里包含JavaScript,但上面链接的jsFiddle将是查看它的更好地方。

    我正在使用的插件是: http://www.basic-slider.com/

    $(function () {
    
        $(window).resize(function () {
            if (this.resizeTO) clearTimeout(this.resizeTO);
            this.resizeTO = setTimeout(function () {
                slideShow(); // re-init on resize stop
            }, 500);
        });
    
        function slideShow() {
            $('.bjqs-controls, .bjqs-markers').remove();
            console.log($(window).width());
    
            var ss_width;
            var ss_height;
    
            if ($(window).width() >= 600) {
                // Desktop
                ss_width = 300;
                ss_height = 200;
            } else if ($(window).width() < 600) {
                // Tablet
                ss_width = 150;
                ss_height = 150;
            }
    
            // Load content slideshow
            $('#banner-slide').bjqs({
                nexttext: 'Next',
                prevtext: 'Prev',
                showmarkers: true,
                centermarkers: true, // horizontally center markers            
                responsive: false, // enable responsive behaviour
                width: ss_width,
                height: ss_height
            });
        }
    
        // Init slide show on load
        slideShow();
    
    });
    
    1 回复  |  直到 11 年前
        1
  •  1
  •   Kevin B    11 年前

    所述插件中错误的根本原因是 /^\d\.\d+/i.exec(jQuery.fn.jquery))<1.6 它使用字母数字排序将字符串“1.10”与“1.6”进行比较,因此“1.6”>“1.10”,所以它包含了自己的版本,不能正确地防止冲突。我建议将此作为bug报告给插件作者,修复起来应该很简单。