Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 有没有办法突出显示书签的目标?(www.site.com/page.htm#bookmark)?_Javascript_Jquery_Css - Fatal编程技术网

Javascript 有没有办法突出显示书签的目标?(www.site.com/page.htm#bookmark)?

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#

我想链接到页面上的书签(mysite.com/mypage.htm#bookmark),并在视觉上突出显示已添加书签的项目(可能有红色边框)。当然,会有多个项目被书签。因此,如果有人点击书签2,则其他区域将高亮显示)

我知道如何使用.asp或.aspx来实现这一点,但我想做得更简单一些。我想也许有一个聪明的方法可以用CSS实现

我感兴趣的原因:
-我想让我们的程序链接到一个购物页面,上面列出了所有的程序。我正在使用书签,所以他们会跳转到特定的程序区域(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而不是名称属性的代码,所以现在比较干净了。