非常沮丧和尴尬,我无法弄清楚这一点。客户需要网站底部的站点地图,只需单击一下,即可将用户带到该页面中的任何页面和任何选项卡。应该很容易做到,但由于某种原因,我不能把我的大脑包裹起来。在完全诚实的努力下,我是一名艺术家,只有足够的代码知识才是危险的。我不能自己编写JQuery,但是我能够阅读已经编写的内容并了解正在发生的事情。
示例1- Contact.php拥有基本功能
示例2- TabTest1.html我能够从stackoverflow的.com问题10616833 / link-to-anchor-inside-tabbed-content-from-an-external-link中获取信息并使其工作。那里的脚本实际上不起作用(对我来说)。花了我一天的时间,但我弄清楚它是什么(括号,像往常一样),你看到的是工作中的信息。不幸的是,它不仅仅插入我现有的代码中。我尝试了几种不同的方法,但我并不完全理解jsfiddle中发生了什么。
示例2- ContactRE.php这是我尝试使用上述问题中给出的代码的最佳尝试。我只是感到不堪重负。您可以单击选项卡并查看它正在执行的操作,但是在单击任何选项卡后,它们都会亮起为已选中,但内容根本不会更改。我怀疑它与“// return false”有关。在“if”语句之前,因为取消注释它会使它全部再次起作用,但仍然无法从外部链接到单个选项卡。当它打开时,似乎ContactRE.php #Social确实链接了,但只有在输入后,按Enter键,等待然后点击刷新。
示例4- index.php您可以看到它与示例1类似,只是一个不同的页面来测试链接。它不起作用。标签内容刚刚消失。
对于示例1,2和4,您可以看到我在尝试站点地图所在的“BottomInfo”类中的论坛之前尝试自己解决这个问题。当我意识到我认为可行的系统时,Links3就是我开始使用的那个,在Links2中,Links1不会削减它。我只是采用构成选项卡的链接,通过CSS删除样式并制作列表。适用于它的相应页面,但不能在外部链接。
我为那些喜欢它的人创建了一个JSFiddle。我不太擅长理解“嘿,只要加上这个,突然 - 魔术!”其次是代码片段,除非他们有很好的解释。也许有一天,还没有。 http://jsfiddle.net/ANCannan/CfGHp/
下面是我工作的JS,但我不能在URL中使用哈希来外部链接到选项卡
<script type= "text/javascript">
$(document).ready(function(){
// When user clicks on tab, this code will be executed
$("#tabs li").click(function() {
// First remove class "active" from currently active tab
$("#tabs li").removeClass('active');
// Now add class "active" to the selected/clicked tab
$(this).addClass("active");
// Hide all tab content
$(".tab_content").hide();
// Here we get the href value of the selected tab
var selected_tab = $(this).find("a").attr("href");
// Show the selected tab content
$(selected_tab).fadeIn();
// At the end, we add return false so that the click on the link is not executed
return false;
});});
</script>
这是我的Frankenstein JS尝试通过URL
中的哈希使标签链接 <script type= "text/javascript">
$(document).ready(function(){
// When user clicks on tab, this code will be executed
$("#tabs li").click(function() {
// First remove class "active" from currently active tab
$("#tabs li").removeClass('active');
// Now add class "active" to the selected/clicked tab
$(this).addClass("active");
// Hide all tab content
$(".tab_content").hide();
// Here we get the href value of the selected tab
var selected_tab = $(this).find("a").attr("href");
// Show the selected tab content
$(selected_tab).fadeIn();
// At the end, we add return false so that the click on the link is not executed
return false;
});
if (window.location.hash !== '') {
var $targetAnchor = $(document.location.hash);
// Grab the ID of the .tab-content that the hash is referring to
tabId = $targetAnchor.closest('.tab_content').attr('id');
// Find the anchor element to "click", and click it
$("#tabs li").find('a[href=#' + tabId + ']').click();
$('html, body').animate({
scrollTop: $targetAnchor.offset().top
});
}
$('a').not('.tabs li a').on('click', function(evt) {
evt.preventDefault();
var whereTo = $(this).attr('goto');
$tabs = $("ul.tabs li");
$tabs.find('a[href=#' + whereTo + ']').trigger('click');
alert(attr('name'));
alert( $('#'+whereTo+' a').offset().top );
$('html, body').animate({
scrollTop: $('#'+whereTo+' a').offset().top
});
});
$(function() {
$('a.refresh').live("click", function() {
location.reload();
});
});});
</script>
这是我的缩写HTML
<div class= "Centered" id="TextContent">
<div id="tabs_container">
<ul id="tabs">
<li>
<div class= "Centered" id="TextContent2">
<div id="tabs_container2">
<ul id="tabs2">
<li class="active">
<div class= "LinkText" id="TT1"> <a class="icon_accept" href="#Before">Before</a></div>
</li>
<li>
<div class= "LinkText" id="TT2"> <a class="icon_accept" href="#During">During</a></div>
</li>
<li>
<div class= "LinkText" id="TT3"> <a class="icon_accept" href="#After">After</a></div>
</li>
</ul><!---Ends ul id "tabs" container2-->
</div><!---Ends "tabs_container2"-->
</div><!---Ends "Centered Text Content2"-->
</li>
</ul><!---Ends ul id "tabs-->
</div><!---Ends "tabs-container"-->
<div id="tabs_content_container">
<div id="Before" class="tab_content" style="display: block;">
<img src="Images/before.png" class="alignLeft" alt="CMC and QA Icons"><p>Sed do eiusmod tempor incididunt consectetur adipisicing elit, duis aute irure dolor. In reprehenderit in voluptate quis nostrud exercitation eu fugiat nulla pariatur. Ullamco laboris nisi qui officia deserunt lorem ipsum dolor sit amet. In reprehenderit in voluptate cupidatat non proident, sed do eiusmod tempor incididunt.</p>
<p>Ullamco laboris nisi ut aliquip ex ea commodo consequat. Consectetur adipisicing elit, in reprehenderit in voluptate ut enim ad minim veniam. Lorem ipsum dolor sit amet, quis nostrud exercitation velit esse cillum dolore. In reprehenderit in voluptate excepteur sint occaecat eu fugiat nulla pariatur.</p><p>Sed do eiusmod tempor incididunt consectetur adipisicing elit, duis aute irure dolor. In reprehenderit in voluptate quis nostrud exercitation eu fugiat nulla pariatur. Ullamco laboris nisi qui officia deserunt lorem ipsum dolor sit amet. In reprehenderit in voluptate cupidatat non proident, sed do eiusmod tempor incididunt.</p>
<p>Ullamco laboris nisi ut aliquip ex ea commodo consequat. Consectetur adipisicing elit, in reprehenderit in voluptate ut enim ad minim veniam. Lorem ipsum dolor sit amet, quis nostrud exercitation velit esse cillum dolore. In reprehenderit in voluptate excepteur sint occaecat eu fugiat nulla pariatur.</p>
</div><!---Ends Before container-->
<div id="During" class="tab_content" style="display: block;">
<p>In reprehenderit in voluptate cupidatat non proident, sed do eiusmod tempor incididunt.</p>
<p>Ullamco laboris nisi ut aliquip ex ea commodo consequat. Consectetur adipisicing elit, in reprehenderit in voluptate ut enim ad minim veniam. Lorem ipsum dolor sit amet, quis nostrud exercitation velit esse cillum dolore. In reprehenderit in voluptate excepteur sint occaecat eu fugiat nulla pariatur.</p>
<p>Sed do eiusmod tempor incididunt consectetur adipisicing elit, duis aute irure dolor. In reprehenderit in voluptate quis nostrud exercitation eu fugiat nulla pariatur. Ullamco laboris nisi qui officia deserunt lorem ipsum dolor sit amet. In reprehenderit in voluptate cupidatat non proident, sed do eiusmod tempor incididunt.</p>
<p>Ullamco laboris nisi ut aliquip ex ea commodo consequat. Consectetur adipisicing elit, in reprehenderit in voluptate ut enim ad minim veniam. Lorem ipsum dolor sit amet, quis nostrud exercitation velit esse cillum dolore. In reprehenderit in voluptate excepteur sint occaecat eu fugiat nulla pariatur.
</div><!---Ends "During"-->
<div id="After" class="tab_content">
<img src="Images/after.png" class="alignRight" alt="CMC and QA Icons">
<p> <p>Sed do eiusmod tempor incididunt consectetur adipisicing elit, duis aute irure dolor. In reprehenderit in voluptate quis nostrud exercitation eu fugiat nulla pariatur. Ullamco laboris nisi qui officia deserunt lorem ipsum dolor sit amet. In reprehenderit in voluptate cupidatat non proident, sed do eiusmod tempor incididunt.</p>
<p>Ullamco laboris nisi ut aliquip ex ea commodo consequat. Consectetur adipisicing elit, in reprehenderit in voluptate ut enim ad minim veniam. Lorem ipsum dolor sit amet, quis nostrud exercitation velit esse cillum dolore. In reprehenderit in voluptate excepteur sint occaecat eu fugiat nulla pariatur.</p>
<p>Sed do eiusmod tempor incididunt consectetur adipisicing elit, duis aute irure dolor. In reprehenderit in voluptate quis nostrud exercitation eu fugiat nulla pariatur. Ullamco laboris nisi qui officia deserunt lorem ipsum dolor sit amet. In reprehenderit in voluptate cupidatat non proident, sed do eiusmod tempor incididunt.</p>
<p>Ullamco laboris nisi ut aliquip ex ea commodo consequat. Consectetur adipisicing elit, in reprehenderit in voluptate ut enim ad minim veniam. Lorem ipsum dolor sit amet, quis nostrud exercitation velit esse cillum dolore. In reprehenderit in voluptate excepteur sint occaecat eu fugiat nulla pariatur.</p>
</div><!---Ends "After"-->
我已经阅读了以下内容,并尝试以各种方式实施,但没有一项工作。我甚至试图应用一些手风琴的思维结构,因为人们似乎对手风琴提出同样的问题,但我不擅长将它应用到标签上。
JQuery的主题/ link-to-tab-from-outside-tabs-div
很抱歉没有链接,显然我只能发帖2。
主要更新 10月19日美国东部时间下午1点 我还没有完全解决我的问题,但我现在可以从网站外部链接到特定的URL(或输入),但是,如果我在页面上,当我点击链接时,URL会更新页面或手动输入,但在点击“刷新”之前不会更改内容。 该页面为http://certus.worldpath.net/crazy.html 通过在末尾添加“#Email”直接链接到选项卡。 想法?
我将非常感谢你能给我的任何帮助。
答案 0 :(得分:6)
据我了解你的问题,这应该与你的问题相符:
请选择look at the solution(#During,#After)
if (window.location.hash) {
var wndHash = window.location.hash;
var tab = wndHash + "Tab";
// if hash exist on doc ready then remove class "active" from all tabs
$("#tabs li").removeClass('active');
// show the tab content and make tab list item (li) active
$(wndHash).fadeIn();
$(tab).parent().addClass("active");
console.log(wndHash, $(wndHash), tab, $(tab));
} else {
// if no hash make the BeforeTab active
$("#Before").fadeIn();
$("#BeforeTab").parent().addClass("active");
}
根据Naman Goel建议(参见本主题),我设置了basic css3 target selector demo:
<h2>Table of contents</h2>
<ul>
<li><a href="#intro">intro</a>
<li><a href="#end">the end</a>
</ul>
<h2><a name="intro">CSS3 selectors and the :target pseudo class</a></h2>
<h2><a name="end">Look at me - i am the END-Anchor</a></h2>
这个css
h2 {font-size: 24px; font-weight: heavy; padding: 1em;}
*:target { color: red; font-size: 32px; }
如果网址包含相应的锚点(#intro或#end),则基本设置是否更改h2标题的css
在您的主要更新中,您写道:“如果我在页面上,当我点击页面中的链接但不会更改内容时,URL会更新”
在your page中,所有标签(tab Email)都正常运行并正在加载相应的内容。所以我假设您正在讨论页面页脚mad.html中的链接:
<div class="BottomInfo" id="A234">
<div class="Links3">
<a href="Contact.php">Contact</a>
<ul id="Nottabs">
<li class="Lactive">foo</li>
<li><div class="LinkText" id="LinksTT2">
<a class="icon_accept" href="#Email">Email Us</a></div>
</li>
</ul><!---Ends ul id "Nottabs-->
</div>
</div>
如果单击此链接,则内容不会更新,因为您没有为页脚中的链接附加事件处理程序。
使用chrome devtools,您可以看到页脚中的链接没有附加事件处理程序。
。
在您的javascript中,为每个匹配此selector $("#tabs li")
的DOM节点添加点击事件。在您的页脚(BottomInfo
)中,列表项与选项卡中的选择器不匹配。因此,当您单击页脚中的链接时,没有任何反应。如果您为列表项$("#Nottabs li").click(...
添加事件处理程序并将相同的代码添加到选项卡中,它应该可以正常工作。
$("#Nottabs li").click(function () {
// similar to your tab solution
// you have to attach a click-event handler
// to the list item in your BottomInfo
}
请以您的代码为起点,查看the fully working demo。
如果这可以解决您的问题,请告诉我
我找到了demo for tabs using css3。这真是令人印象深刻。
答案 1 :(得分:2)
我有一个更简单的解决方案。 使用标签界面的:target的CSS3属性。 一切都会开始为你工作。
此外,您可以使用selectivizr为旧浏览器填充它。
基本上你用标签内容定义不同的div。并将其设置为display:none 和div:target {display:block; }
并且标签按钮可以是指向#idnameofDiv
的简单链接这真的很容易。它应该是你的最佳选择,没有javascript。