j查询下拉菜单.页面标记无法正常工作 - 或者我想要它的方式
jQuery dropdown menu. Page marker not working correctly - or how i want it to
栏看起来与我自己这边的并不完全相同,因为我有背景图像等 - 但导航栏本身完美运行,即使在 jsfiddle 上它看起来有点时髦。
我遇到的问题是每当我在页面上时我的视觉标记,在 jsFiddle 上都看不到,或者根本看不到,因为我无法单击其他页面)。 我能够让视觉标记在我点击的特定页面上工作,但仅限于该特定点击,我试图实现的是你在哪里的视觉标记,无论你在页面中有多深(无论是 ul li a 还是 ul li> ul li a,甚至是 ul li> ul li> ul li a)。例如。
(需要看Jsfiddle才能理解我在说什么)如果我将鼠标悬停在"Web"上,则会出现一个下拉菜单。然后我继续转到"Web-215",那里有另一个下拉菜单,我决定要导航到"jQuery"页面。
当前发生的事情是:当我单击"jQuery"时,该单个项目被赋予了"当前"的 id。 这会改变外观。但它只对那一项这样做。
我希望它做的是:如果我只单击"Web",它将为"Web"添加属性,但如果我单击"Web> Web-215"或该文件夹中的任何内容 - 那么它将突出显示 Web 和 web-215。而且 - 如果我单击"jQuery",这是"Web-215"的第三级li,那么所有三个都将选择属性"当前"。如果我选择不同的路径或链接,它应该遵循这些规则。
我不确定我需要去哪里,但这是现场示例:http://jsfiddle.net/knvH4/2/
这就是我认为某处的问题在于 jsfiddle 中 JavaScript 中的第 16 行
function youAreHere() {
var pathName = $(location).attr('pathname');
var curPage = pathName.substring(pathName.lastIndexOf('/') + 1);
$('a').each(function () {
if ($(this).attr('href') == curPage) {
$(this).attr('id', 'current');
} else if (curPage == '') {
$('a:first').attr('id', 'current');
}
}); //END function
我需要做什么才能使所有人都被赋予"当前"的属性(或 id),而不仅仅是一个。
首先要注意的是,切勿为页面上的多个元素提供相同的 id。 请改用类。
如果您成功地突出显示了当前页面项,但不是父项,则可以使用 jQuery 的 closest()
方法并向其中添加"current"类(这意味着更改 css 以反映类而不是 id 也是如此)。我还没有测试过下面的代码,但我认为它会有所帮助:
if ($(this).attr('href') == curPage) {
$(this).addClass('current');
//if inside child menu, highlight parent anchor
if($(this).closest('ul').siblings('a').length){
$(this).closest('ul').siblings('a').addClass('current');
//if inside grandchild menu, highlight grandparent anchor as well
if($(this).closest('ul').siblings('a').closest('ul').siblings('a').length){
$(this).closest('ul').siblings('a').closest('ul').siblings('a').addClass('current');
}
}
} else if (curPage == '') {
$('a:first').addClass('current');
}
理想情况下,您将向每个ul
添加 id
s,而不是向上遍历 dom。
提出的问题的解决方案 - 感谢给我输入的人!
function youAreHere() {
var pathName = $(location).attr('pathname');
var curPage = pathName.substring(pathName.lastIndexOf('/')+1, pathName.lastIndexOf('.'));
$('a').each(function() {
var href = $(this).attr('href');
var path = href.substring(0, href.lastIndexOf('.'));
if(curPage.indexOf(path) !== -1) {
$(this).addClass('current');
} else if (curPage == '') {
$('a:first').addClass('current');
}
});//END function
- Javascript:selenium Web驱动程序isDisplayed()不工作
- jQuery UI自动完成突然停止工作
- AngularJS UI路由器不能像ng路由器那样工作
- HTML5音频加载和播放获胜'我不能在iPad上工作
- JavaScript打印功能使日历停止工作
- Javascript.getHours()工作不正常
- 为什么这在IE中的工作方式与在Firefox中不同
- Javascript(jQuery)/HTML:设置<输入>或者<选择>启用,不工作
- j查询下拉菜单.页面标记无法正常工作 - 或者我想要它的方式
- 离子载玻片如何在离子 1.2.4 上工作(或者它适用于 1.2.4?
- javascript import语句是否足以让CurvyCorners工作,或者我是否必须添加更多
- 可以'不能让js模型与localStorage一起工作,或者根本不能
- Jquery不工作(也许AJAX重载-或者只是语法不好?)
- document.onkeydown不工作,或者只工作一次
- clearInterval不工作(或者可能是setTimeout)
- 转义字符的实现是否在JavaScript和PHP中类似地工作,或者两者的实现是否有任何差异
- jQuery不工作,或者我使用它的方式不对
- 这里的eval是如何工作的或者它是如何表现的
- 这是一个什么样的物体,或者它真的是一个物体吗?它是如何工作的?(JavaScript)
- 如何使用$compile,或者使工作成为动态生成的按钮