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

时间:2013-10-17 20:01:56

标签: javascript jquery slider compatibility uislider

  1. View my jsFiddle

  2. 将HTML预览调整为小宽度,并确保幻灯片正确调整大小

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

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

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

  6. 我无法弄清楚bjqs插件导致1.10.1出现此问题的原因。

    插件有什么东西阻止它在调整大小函数中第二次调用吗?

    此处包含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 个答案:

答案 0 :(得分:1)

所述插件中的错误的根本原因是/^\d\.\d+/i.exec(jQuery.fn.jquery))<1.6它使用字母数字排序将字符串“1.10”与“1.6”进行比较,因此“1.6”&gt; “1.10”,因此它包含了自己的版本,并没有正确防止冲突。我建议将此报告为插件作者的错误,修复它应该是微不足道的。