如何动态切换div id

And*_*irn 0 html css web

我有4个div彼此相邻,每个div包含一个链接.我想动态切换"当前"的id,

例如.

<div name="1" id="current">
<a>
link
</a>
</div>
<div name="2">
<a>
link
</a>
</div>
<div name="3">
<a>
link
</a>
</div>
<div name="4">
<a>
link
</a>
</div>
Run Code Online (Sandbox Code Playgroud)

如何在单击链接时动态更改当前的哪一个?

jny*_*len 7

不要这样做.元素ID不应根据网页的状态而改变.请使用其他属性,例如class="current".

如果您正在使用我强烈推荐的jQuery,您可以按如下方式执行此操作:

$('div.tab a').click(function() {
  $('div.tab').removeClass('current');
  $(this).closest('div.tab').addClass('current');
  return false;
});
Run Code Online (Sandbox Code Playgroud)

要使此代码有效,您需要添加class="tab"<div>元素中.如果您<div>在页面上有其他元素,这是一个好主意.如果执行此操作,则当前选项卡将具有属性class="tab current".jQuery知道如何正确处理这个问题.

此外,我会考虑使用id属性而不是name属性,并为您的<a>标记提供一个href属性,以便浏览器将它们显示为可点击元素.例如:

<div id="tab1" class="tab">
  <a href="#">tab 1</a>
</div>
Run Code Online (Sandbox Code Playgroud)

以下是如何包含此脚本的示例(假设您将JQuery保存jquery.js为与HTML页面位于同一目录中的文件):

<!DOCTYPE html>
<html>
  <head>
    <title>Testing jQuery</title>
    <script type="text/javascript" src="jquery.js"></script>
    <script type="text/javascript">
      $(function() {
        $('div.tab a').click(function() {
          $('div.tab').removeClass('current');
          $(this).closest('div.tab').addClass('current');
          return false;
        });
      });
    </script>
  </head>
  <body>
    <div id="tab1" class="tab current">
      <a href="#">tab1 link</a>
    </div>
    <div id="tab2" class="tab">
      <a href="#">tab2 link</a>
    </div>
    <div id="tab3" class="tab">
      <a href="#">tab3 link</a>
    </div>
    <div id="tab4" class="tab">
      <a href="#">tab4 link</a>
    </div>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

关于这一点的几点说明:

  • 真的,最好把你的网站的JavaScript放在一个单独的文件中并包含它<script type="text/javascript" src="filename.js"></script>,但包括它"内联",就像我已经做的那样对于小项目或只是玩弄东西.

  • $(function() { ... });是简写$(document).ready(function() { ... });,这意味着一旦浏览器加载HTML文档结构,该块内的代码就会被执行.例如,您不希望在浏览器下载完其余页面之前执行JavaScript.