我有一个非常标准的网站导航。主导航是ul,有几个嵌套的ul。我基本上只是想在用户已经在该页面上时动态禁用链接。
因此,如果我在主页上,则需要禁用主页链接。如果我在联系页面上,则需要禁用联系页面链接。
我不想完全删除链接,只需从锚点中删除href,或者只是让锚点自身取消激活。在XHTML,CSS,JavaScript或php中是否有一个快速,灵活和优雅的解决方案。我还想要一个全面友好的解决方案,而不仅仅是现代浏览器(你可以阅读,IE 6)。
我确实想过在每个页面上设置一个路径变量,然后为每个链接都有一个if语句,但这看起来非常单调乏味和愚蠢。但是,嘿,它可以完成工作。
答案 0 :(得分:3)
我认为最好在页面生成代码(即PHP)中执行此操作,迭代每个链接并删除<a>
标记,将其替换为<span>
或类似的内容(如果链接匹配当前页面的匹配条件。 PHP在其基础中为您提供当前页面(以各种方式:$_SERVER['REQUEST_URI']
,$_SERVER['SCRIPT_FILENAME']
,$_SERVER['PHP_SELF']
,$_SERVER['QUERY_STRING']
等),并使用这些页面,您可以确定算法匹配您的页面。
答案 1 :(得分:0)
用于从 <a>
标签中删除 href 属性的 JavaScript:
var anchors = document.getElementsByTagName('a');
for( var i=0; i < anchors.length; i++ ) {
if ( anchors[i].getAttribute('href') === win.location.href ) {
anchors[i].removeAttribute('href');
//anchors[i].setAttribute('class', 'unlinked'); add for IE8
}
}
用于禁用链接事件的 CSS:
a:not([href]) {
/* a.unlinked { */ use in place of the line above for IE8
pointer-events:none;
color:inherit;
}
它适用于 IE9 或更高版本。
对于 IE8,您必须使用替代代码行(请参阅注释)。
对于 IE6 或 IE7,必须删除 <a>
标记,并在其位置插入具有相同文本的 <span>
标记(删除 href 对它们不起作用)。