Javascript 有没有办法突出显示书签的目标?(www.site.com/page.htm#bookmark)?
我想链接到页面上的书签(mysite.com/mypage.htm#bookmark),并在视觉上突出显示已添加书签的项目(可能有红色边框)。当然,会有多个项目被书签。因此,如果有人点击书签2,则其他区域将高亮显示) 我知道如何使用.asp或.aspx来实现这一点,但我想做得更简单一些。我想也许有一个聪明的方法可以用CSS实现 我感兴趣的原因:Javascript 有没有办法突出显示书签的目标?(www.site.com/page.htm#bookmark)?,javascript,jquery,css,Javascript,Jquery,Css,我想链接到页面上的书签(mysite.com/mypage.htm#bookmark),并在视觉上突出显示已添加书签的项目(可能有红色边框)。当然,会有多个项目被书签。因此,如果有人点击书签2,则其他区域将高亮显示) 我知道如何使用.asp或.aspx来实现这一点,但我想做得更简单一些。我想也许有一个聪明的方法可以用CSS实现 我感兴趣的原因: -我想让我们的程序链接到一个购物页面,上面列出了所有的程序。我正在使用书签,所以他们会跳转到特定的程序区域(site.com/shoppingpage#
-我想让我们的程序链接到一个购物页面,上面列出了所有的程序。我正在使用书签,所以他们会跳转到特定的程序区域(site.com/shoppingpage#Programx)但是为了让它更明显,我想突出显示链接到的页面。我想如果你想与数据库交互,你是否可以用JavaScript和cookies存储这些信息,以实现记住书签的功能,甚至可以添加一些Ajax CSS只能进行样式设置。您必须给书签锚定一个在CSS文件中找到的类
CSS还有一个:visited选择器,用于设置浏览器历史记录中的链接样式。使用您最喜欢的JS工具包向包含(或包含在)锚定的项目添加“突出显示”(或其他)类 比如:
jQuery(location.hash).addClass('highlight');
当然,如果希望页面上的其他链接触发它,您需要调用onready或单击,并且需要定义.highlight类。您还可以根据要突出显示的容器,使jQuery选择器向上或向下遍历。在css中,您需要定义
a.突出显示{边框:1px纯红色;}
或者类似的东西
然后使用jQuery
$(document).ready ( function () { //Work as soon as the DOM is ready for parsing
var id = location.hash.substr(1); //Get the word after the hash from the url
if (id) $('#'+id).addClass('highlight'); // add class highlight to element whose id is the word after the hash
});
要在鼠标悬停时高亮显示目标,请添加:
$("a[href^='#']")
.mouseover(function() {
var id = $(this).attr('href').substr(1);
$('#'+id).addClass('highlight');
})
.mouseout(function() {
var id = $(this).attr('href').substr(1);
$('#'+id).removeClass('highlight');
});
您还可以在CSS中使用
target
伪类:
<html>
<head>
<style type="text/css">
div#test:target {
background-color: yellow;
}
</style>
</head>
<body>
<p><b><a href="#test">Link</a></b></p>
<div id="test">
Target
</div>
</body>
</html>
div#测试:目标{
背景颜色:黄色;
}
目标
不幸的是,IE或Opera不支持目标伪类,因此如果您在这里寻找通用解决方案,这可能还不够。我不确定您的要求,也许您可以澄清一下?这不起作用,因为它试图找到具有哈希ID的元素,而不是具有NAME属性的锚点。samjudson,您不应该有带有name属性的锚。在现代HTML中,散列锚点应该指向id属性。这很好-您可能还希望选择锚点的父元素,而不是锚点本身。在现代HTML中,散列应该指向id属性,而不是名称属性。感谢Ryan提供的提示,修复了处理id而不是名称属性的代码,所以现在比较干净了。