Javascript jQuery插件在第二次调用时会中断
为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',
(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) 应该有两组具有不同配置的工作选项卡。