最后一个jQuery选项卡元素在Safari中重复
我在页面右侧设置了一些jQuery选项卡,但是在Safari中,最后一个选项卡链接是重复的,即“静态页面”显示两次。这在其他浏览器中不会发生。任何关于为什么会发生这种情况的帮助 这是我的标签代码:最后一个jQuery选项卡元素在Safari中重复,jquery,safari,tabs,duplicates,Jquery,Safari,Tabs,Duplicates,我在页面右侧设置了一些jQuery选项卡,但是在Safari中,最后一个选项卡链接是重复的,即“静态页面”显示两次。这在其他浏览器中不会发生。任何关于为什么会发生这种情况的帮助 这是我的标签代码: jQuery(document).ready(function(){ // We can use this object to reference the panels container var panelContainer = jQuery('div#panels');
jQuery(document).ready(function(){
// We can use this object to reference the panels container
var panelContainer = jQuery('div#panels');
// Find panel names and create nav
// -- Loop through each panel
panelContainer.find('div.panel').each(function(n){
// For each panel, create a tab
jQuery('div#tabs-box ul').append('<li class="tab"><a href="#' + (n+1) + '">' + jQuery(this).attr('title') + '</a></li>');
});
// Determine which tab should show first based on the URL hash
var panelLocation = location.hash.slice(1);
if(panelLocation == '1'){
var panelNum = panelLocation;
} else if(panelLocation == '2'){
var panelNum = panelLocation;
} else if(panelLocation == '3'){
var panelNum = panelLocation;
} else if(panelLocation == '4'){
var panelNum = panelLocation;
} else if(panelLocation == '5'){
var panelNum = panelLocation;
} else if(panelLocation == '6'){
var panelNum = panelLocation;
} else if(panelLocation == '7'){
var panelNum = panelLocation;
} else if(panelLocation == '8'){
var panelNum = panelLocation;
} else if(panelLocation == '9'){
var panelNum = panelLocation;
} else if(panelLocation == '10'){
var panelNum = panelLocation;
}else{
var panelNum = '1';
}
// Hide all panels
panelContainer.find('div.panel').hide();
// Display the initial panel
panelContainer.find('div.panel:nth-child(' + panelNum + ')').fadeIn('slow');
// Change the class of the current tab
jQuery('div#tabs-box ul').find('li.tab:nth-child(' + panelNum + ')').removeClass().addClass('tab-active');
// What happens when a tab is clicked
// -- Loop through each tab
jQuery('div#tabs-box ul').find('li').each(function(n){
// For each tab, add a 'click' action
jQuery(this).click(function(){
// Hide all panels
panelContainer.find('div.panel').hide();
// Find the required panel and display it
panelContainer.find('div.panel:nth-child(' + (n+1) + ')').fadeIn('slow');
// Give all tabs the 'tab' class
jQuery(this).parent().find('li').removeClass().addClass('tab');
// Give the clicked tab the 'tab-active' class
jQuery(this).removeClass().addClass('tab-active');
});
});
});
jQuery(文档).ready(函数(){
//我们可以使用此对象引用panels容器
var panelContainer=jQuery('div#panels');
//查找面板名称并创建导航
//--通过每个面板进行循环
panelContainer.find('div.panel')。每个(函数(n){
//为每个面板创建一个选项卡
jQuery('div#tabs box ul')。追加(');
});
//根据URL哈希确定应首先显示哪个选项卡
var panelLocation=location.hash.slice(1);
如果(面板位置='1'){
var panelNum=panelLocation;
}else if(panelLocation='2'){
var panelNum=panelLocation;
}else if(panelLocation==“3”){
var panelNum=panelLocation;
}else if(panelLocation='4'){
var panelNum=panelLocation;
}else if(面板位置='5'){
var panelNum=panelLocation;
}else if(面板位置='6'){
var panelNum=panelLocation;
}else if(面板位置='7'){
var panelNum=panelLocation;
}else if(面板位置='8'){
var panelNum=panelLocation;
}else if(面板位置='9'){
var panelNum=panelLocation;
}else if(面板位置='10'){
var panelNum=panelLocation;
}否则{
var panelNum='1';
}
//隐藏所有面板
panelContainer.find('div.panel').hide();
//显示初始面板
panelContainer.find('div.panel:n个子('+panelNum+')).fadeIn('slow');
//更改当前选项卡的类别
jQuery('div#tabs box ul').find('li.tab:n个子('+panelNum+')).removeClass().addClass('tab-active');
//单击选项卡时会发生什么情况
//--循环浏览每个选项卡
jQuery('div#tabs box ul')。find('li')。每个(函数(n){
//对于每个选项卡,添加“单击”操作
jQuery(this).单击(函数(){
//隐藏所有面板
panelContainer.find('div.panel').hide();
//找到所需的面板并显示它
panelContainer.find('div.panel:n个子('+(n+1)+')).fadeIn('slow');
//为所有选项卡设置“tab”类
jQuery(this).parent().find('li').removeClass().addClass('tab');
//为单击的选项卡指定“tab active”类
jQuery(this.removeClass().addClass('tab-active');
});
});
});
出于某种原因,find方法返回了一个额外的元素,很难说为什么基于所有HTML。一个简化的页面示例在Safari中工作
要修复脚本,如果只使用类面板(而不是div.panel
)搜索元素,它应该可以在Safari中工作
panelContainer.find('.panel').each(function(n){
非常感谢David,这解决了问题。