Javascript 目标链接状态

标签 javascript html css

我有一些 javascript 可以用两个单独的链接切换两个 div,我想在所选链接旁边添加一个小图像,例如,如果您选择要查看的 div 1,链接将有一个小元素符号在它旁边,如果您选择 div 2,div 2 上会有一个元素符号。这是脚本,任何人都可以帮忙:)

<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">



  <style type='text/css'>


  </style>


  <script type='text/javascript' src='http://code.jquery.com/jquery-1.6.2.js'></script>

<script type='text/javascript'>//<![CDATA[ 
$(window).load(function(){
$(function(){

    $('a[id^="link"]').click(function(){
        var vid_id = $(this).attr("id").replace("link", "#testVid");
        $('div[id^="testVid"]').hide();
        $(vid_id).show();
    });
    $('span[id^="close"]').click(function(){
        var vid_id = $(this).attr("id").replace("close", "#testVid");
        $(vid_id).hide();
    });
});

});//]]>  

</script>


</head>
<body>
  <div>
    <a href="#" id="link1">Click Link 1</a><br />
    <a href="#" id="link2">Click Link 2</a><br />

    <div id="testVid1" style="background:pink; height:300px">Test Vid Div 1<br /><br /><span id="close1">CLOSE 1</span></div>
    <div id="testVid2" style="display:none;background:pink; height:300px">Test Vid Div 2<br /><br /><span id="close2">CLOSE 2</span></div>

</div>

</body>


</html>

最佳答案

您可以通过多种方式做到这一点。我能想到三个,而且我相信还有更多。

  1. 背景图片和填充
  2. 内容:之前
  3. 动态改变 DOM(不推荐)

#1 和#2 的想法是更改所选元素的 CSS 样式。对于 #1,您可以像这样定义样式:

.selected {
    background-image: url(myselectedimage.png);
    background-repeat: no-repeat;
    background-position: left center;
    padding-left: 20px; /* or whatever the size of your image is */
}

对于 #2,您将使用以下内容:

.selected:before {
    content: "\u2219"; /* bullet */
}

然后,您可以像这样从所有内容中删除 .selected 类,并在单击链接时将其添加到所选链接:

$('a[id^="link"]').click(function(e){
    $('a[id^="link"]').removeClass('selected');
    $(e.currentTarget).addClass('selected');
    ...
});

$('span[id^="close"]').click(function(){
    $('a[id^="link"]').removeClass('selected');
    ...
});

方法 #1 的优点是几乎所有现代浏览器都支持它而没有问题。 #2 的优点是它更灵活——您可以添加文本、图像、属性以及各种东西,但要注意浏览器支持可能不一致。因为您已经在使用 CSS3 选择器 (^=),所以您可能没问题。参见 CSS Tricks了解更多信息。

方法 3 涉及在链接前插入和删除 HTML。这是可能的,但笨拙。在 CSS2 和 3 出现之前,我们就是这样做的。 :) 我不推荐它,但偶尔它是以可靠的跨浏览器方式完成任务的唯一方法(在这种情况下可能不是)。为此,请在每个链接前插入一个 标记,其中包含一个可根据链接 ID 计算的 ID(或者您可以使用 CSS 选择器来查找同级链接)。然后使用 JQuery 的 .html() 方法将 HTML 插入其中,例如:

<span id="bullet-link1"></span><a href="#" id="link1">Click Link 1</a><br />
...

<script lang="text/javascript">
$('a[id^="link"]').click(function(e) {
    $('span[id^="bullet-"]').html('');
    $('#bullet-' + e.currentTarget.id).html('&#8226;');
    ...
});
</script>

关于Javascript 目标链接状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14853669/

相关文章:

javascript - 默认情况下 Google map v3 地形 View

javascript - 如何删除输入框中的某些单词

javascript - Bpopup放置问题

css - Twitter Bootstrap btn-primary 尺寸 IE8

javascript - 找到运行 JavaScript 的标签

javascript - 按特定顺序从 JSON 文件解析为 JavaScript

javascript - 如何检查给定的单词是否包含在字符串中?

javascript - 通过从父 div 中减去另一个子 div 的高度来计算子 div 的高度

css - 将内部阴影边框设置为位于 div 内图像的顶部

php - 如何将第 nth-child 应用于从数据库生成的表