我正在尝试为想要菜单底部和右上角徽标上方的“联系我们”页面的人设计网站。
这里是客户端代码:
这是徽标上方的顶部菜单:
<ul class="topnavigation" style="width:1000px; border-bottom-style: none; height: 40px;">
<li class="highlight" style="width:100px; height: 40px; font-family:Calibri; float:right;"><a href="ContactUs.aspx">Contact Us</a></li>
<li style="width:100px; height:40px; font-family:Calibri; border-left:1px solid white; border-right:1px solid white; float:right;"><a href="StartPage.aspx">Home</a></li>
</ul>
这是徽标下的菜单:
<ul class="navigation" style="width:1000px; height:40px; border-bottom:none;">
<li style="width:150px; font-family:Calibri; height: 40px; border-right:1px solid white;"><a href="AboutUs.aspx">About Us</a></li>
<li style="width:150px; font-family:Calibri; border-right:1px solid white; height: 40px;"><a href="Application.aspx">Applications</a></li>
<li style="width:200px; font-family:Calibri; border-right:1px solid white; height: 40px;"><a href="FeaturesAndBenefits.aspx">Features and Benefits</a></li>
<li style="width:200px; font-family:Calibri; border-right:1px solid white; height: 40px;"><a href="TechnicalSpecs.aspx">Technical Specs</a></li>
<li style="width:150px; font-family:Calibri; border-right:1px solid white; height: 40px;"><a href="ContactUs.aspx">Contact</a></li>
<li style="width:145px; font-family:Calibri; border-right:none; height: 40px;"><a href="Recognition.aspx">Recognition</a></li>
</ul>
要突出显示用户选择的页面我使用了一些javascript(我最近一直在努力学习)和CSS
JavaScript的:
$(document).ready(function () {
var str = location.href.toLowerCase();
$('.topnavigation li a').each(function () {
if (str.indexOf(this.href.toLowerCase()) > -1) {
$("li.highlight").removeClass("highlight");
$(this).parent().addClass("highlight");
}
});
$('.navigation li a').each(function () {
if (str.indexOf(this.href.toLowerCase()) > -1) {
$("li.highlight").removeClass("highlight");
$(this).parent().addClass("highlight");
}
});
});
CSS:
ul.navigation
{
margin: 0px;
padding: 0px;
list-style: none;
background-color:#0071BB;
height:34px;
border-bottom:none;
}
ul.navigation li
{
float: left;
position: relative;
top: 0px;
left: 0px;
}
ul.navigation li a:last-child{}
ul.navigation a
{
color:white;
display: block;
padding: 8px 8px;
text-decoration: none;
}
/*background color of LI*/
ul.navigation li.highlight
{
background:Darkblue;
}
/*Text color for A*/
ul.navigation li.highlight a
{
color:white;
}
ul.navigation li:hover
{
color:white;
background-color:darkblue;
background: darkblue;
}
a, a:visited
{
color:#000;
}
ul.topnavigation
{
margin: 0px;
padding: 0px;
list-style: none;
background-color:#0071BB;
height:34px;
border-bottom:none;
}
ul.topnavigation li
{
float: left;
position: relative;
top: 0px;
left: 0px;
}
ul.topnavigation li a:last-child{}
ul.topnavigation a
{
color:white;
display: block;
padding: 8px 8px;
text-decoration: none;
}
/*background color of LI*/
ul.topnavigation li.highlight
{
background:Darkblue;
}
/*Text color for A*/
ul.topnavigation li.highlight a
{
color:white;
}
ul.topnavigation li:hover
{
color:white;
background-color:darkblue;
background: darkblue;
}
使用此实现,如果用户单击任何页面,则会突出显示该页面。但如果他们点击顶角的“联系我们”,则只会突出显示底部菜单中的“联系我们”,而不是顶部菜单。我觉得这很奇怪,对我来说本身就是一个问题,因为我希望它突出顶部而不是底部。 (如果有人能够回答这个问题,我会很感激 - 因为我不知道它是如何识别它的。)
那么,如何同时突出显示顶部联系页面导航和底部联系页面导航。我假设这将使用java脚本而不是C#代码。
我试图将两者结合起来,例如
$('.navigation li a' & '.topnavigation li a').each(function () {
但意识到这可能不起作用,因为它正在编制索引。虽然我不确定。我试图将它们设置为“if equivalent”,因此如果两个href都相同,那么它会突出显示它们。我所做的一切都没有奏效(虽然有趣的是我得到了一些突出其他导航的奇怪结果)。
那么,有什么建议吗?指出我正确的方向?我没有看到的东西或者如何做到这一点?这是否需要在C#中完成? JavaScript能做到吗?
请告诉我。这是我提出的第一个问题所以我对此感到沮丧。
答案 0 :(得分:2)
您可以使用以下逗号组合jQuery选择器:
$('.navigation li a, .topnavigation li a').each(function () {
请注意,逗号包含在单引号内。
答案 1 :(得分:2)
你真的不需要每个人,除非你根据他们的根类做一些特别的事情,否则你也不需要组合选择器。你只需要一种匹配方法。这是一个演示 - http://jsfiddle.net/jayblanchard/AEY5h/
编辑:原始代码仍然有效(您需要删除您网站的e.preventDefault();
)
$('li a').click(function(e) {
e.preventDefault(); // just for this demo
var thisHREF = $(this).attr('href'); // get the href of the clicked item
$('li').removeClass('highlight'); // remove all the classes
$('a[href="' + thisHREF + '"]').closest('li').addClass('highlight'); // add the class to the items that have the same href
});
要突出显示页面匹配的元素,请添加以下内容(在上面的块之外) -
var currentPage = location.pathname.substring(1);
$('a[href="' + currentPage + '"]').closest('li').addClass('highlight'); // adds highlight to current page element
在小提琴中,我用jsfiddle的信息替换了位置信息,以便突出显示“联系我们”元素 - http://jsfiddle.net/jayblanchard/AEY5h/1/
答案 2 :(得分:2)
在.topnavigation
菜单中,请勿提供预选的.highlight
课程。
您有一个预选的项目,其中包含课程.highlight
,这可能就是为什么您的脚本可能会突出显示.topnavigation
菜单中的项目,而不是您的.navigation
菜单。
此外,您的jQuery有一些错误,我建议组合选择器,因为.each()函数对于两者都是相同的。
这个更正的版本应该可以解决问题(如果没有.highlight
的预选项目):
$(document).ready(function () {
var str = location.href.toLowerCase();
$('.topnavigation li a, .navigation li a').each(function () {
if (str.indexOf($(this).attr('href').toLowerCase()) > -1) {
$(this).parent().addClass("highlight");
}
});
});
示例JSFiddle:http://jsfiddle.net/gfullam/0rppzomt/
答案 3 :(得分:1)
使用jQuery将多个选择器组合成一个的正确方法不是这样的:
$('.navigation li a' & '.topnavigation li a')
但是喜欢这样:
$('.navigation li a, .topnavigation li a')
Here's a link了解有关多选择器用法的更多文档。在您的javascript中进行更改,您应该正确选择您尝试定位的所有元素。