Javascript jQuery插件在第二次调用时会中断

Javascript jQuery插件在第二次调用时会中断,javascript,jquery,jquery-plugins,tabs,Javascript,Jquery,Jquery Plugins,Tabs,为jQuery编写了一个小选项卡插件: (function ($) { var d = { panelSelector : '.tab-panel', navSelector : '.tab-nav', fromAttr : 'href', toAttr : 'id', startIndex : 0, classActive : 'on',

为jQuery编写了一个小选项卡插件:

(function ($) {
var d = {
        panelSelector   : '.tab-panel',
        navSelector     : '.tab-nav',
        fromAttr        : 'href',
        toAttr          : 'id',
        startIndex      : 0,
        classActive     : 'on',
        onEvent         : 'click',
        stripHash       : true
    };

var methods = {

    init: function (options) {

        $.extend(d, options);

        return this.each(function () {

            var parent = $(this);

            parent.tabs('showTab', d.startIndex);

            $(d.navSelector + ' a', parent).on(d.onEvent, function (e) {
                e.preventDefault();
                parent.tabs('showTab', $(this).attr(d.fromAttr));
            });
        });         

    },

    showTab: function (tab, parent, options) {

        $.extend(d, options);

        return this.each(function () {

            var element = '',
                hash = '=';

            if (tab === parseInt(tab)) {
                element = $(d.panelSelector + ':eq(' + tab + ')', $(this));
            } else {

                if (d.stripHash) {
                    tab = tab.replace('#', '');
                }
                element = $(d.panelSelector + "[" + d.toAttr + "=" + tab + "]", $(this));

            }

            if (d.stripHash) {
                hash = '=#';
            }

            $(d.navSelector + " a[" + d.fromAttr + hash + element.attr(d.toAttr) + "]", $(this)).addClass(d.classActive).siblings().removeClass(d.classActive);
            element.show().siblings(d.panelSelector).hide();

        });

    }
}

$.fn.tabs = function (method) {

    if ( methods[method] ) {
        return methods[ method ].apply( this, Array.prototype.slice.call( arguments, 1 ));
    } else if ( typeof method === 'object' || ! method ) {      
        return methods.init.apply( this, arguments );
    } else {
        $.error( 'Method ' +  method + ' does not exist.' );
    }
}

})(jQuery);
即使在同一页面上有多个元素,它也能很好地工作。但当我再次尝试运行它时(例如,对于两个不同的选项集),一切都会中断。有什么提示吗

即使有多个
.tabs
元素,这也可以正常工作:

$(".tabs").tabs();
这打破了一切:

$(".tabs").tabs();
$(".alt-tab").tabs();

谢谢

你所说的“中断”是什么意思?@Blender可以用更好的措辞:“它是如何明确地中断的?它是否只在第一个选择器上工作?它是否在再次调用时停止在以前的后续选择器上工作?它是否生成控制台错误?你希望看到什么情况?”@Blender插件不工作。它不会隐藏任何不该隐藏的div,也不会触发任何功能。@ArminCifuentes:参见jcolebrand的评论。你需要看看它在哪里坏了。@jcolebrand实际上,我有一个虚拟选择器的问题,lol。但是现在它被修复了,并且要回答你的问题:1)它只对第二组元素有效(例如alt tabs);2) 不,一件事也没有;3) 应该有两组具有不同配置的工作选项卡。