关于javascript:如何在鼠标悬停(jQuery)上交换DIV?

关于javascript:如何在鼠标悬停(jQuery)上交换DIV?

How do you swap DIVs on mouseover (jQuery)?

这是第二简单的过渡效果,但我仍然找不到任何简单的解决方案。

想要:我有一个项目列表和一个相应的幻灯片(DIV)列表。加载后,应该选择第一个列表项(粗体),并且应该可以看到第一张幻灯片。当用户将鼠标悬停在另一个列表项上时,应改为选择该列表项,并显示相应的幻灯片。

以下代码有效,但是效果很糟。如何以一种优雅的方式获得这种行为? jQuery具有数十种动画效果和复杂的过渡效果,但是我没有想出这种效果的简洁方法。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<script type="text/javascript">
function switchTo(id) {
    document.getElementById('slide1').style.display=(id==1)?'block':'none';
    document.getElementById('slide2').style.display=(id==2)?'block':'none';
    document.getElementById('slide3').style.display=(id==3)?'block':'none';
    document.getElementById('slide4').style.display=(id==4)?'block':'none';
    document.getElementById('switch1').style.fontWeight=(id==1)?'bold':'normal';
    document.getElementById('switch2').style.fontWeight=(id==2)?'bold':'normal';
    document.getElementById('switch3').style.fontWeight=(id==3)?'bold':'normal';
    document.getElementById('switch4').style.fontWeight=(id==4)?'bold':'normal';
}


<ul id="switches">
  <li id="switch1" onmouseover="switchTo(1);" style="font-weight:bold;">First slide
</li>

  <li id="switch2" onmouseover="switchTo(2);">Second slide
</li>

  <li id="switch3" onmouseover="switchTo(3);">Third slide
</li>

  <li id="switch4" onmouseover="switchTo(4);">Fourth slide
</li>


</ul>


  Well well.
  Oh no!
  You again?
  I'm gone!

我不会在JS关闭时显示所有幻灯片(这可能会破坏页面布局),而是将其放置在开关LIs real A的内部,该链接指向服务器端代码,该代码返回预先设置了"活动"类的页面正确的开关/滑盖。

1
2
3
4
5
6
7
8
9
10
11
12
13
$(document).ready(function() {
  switches = $('#switches > li');
  slides = $('#slides > div');
  switches.each(function(idx) {
    $(this).data('slide', slides.eq(idx));
  }).hover(
    function() {
      switches.removeClass('active');
      slides.removeClass('active');
      $(this).addClass('active');
      $(this).data('slide').addClass('active');
    });
});
1
2
3
4
5
6
7
8
9
#switches .active {
  font-weight: bold;
}
#slides div {
  display: none;
}
#slides div.active {
  display: block;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<html>

<head>

  test

  <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js">
  <script type="text/javascript" src="switch.js">

</head>

<body>

  <ul id="switches">
    <li class="active">First slide
</li>

   
<li>
Second slide
</li>

   
<li>
Third slide
</li>

   
<li>
Fourth slide
</li>

 
</ul>

 
    Well well.
    Oh no!
    You again?
    I'm gone!
 

</body>

</html>


这是我的轻标记jQuery版本:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<script type="text/javascript" src="jquery.js">
<script type="text/javascript">
function switchTo(i) {
  $('#switches li').css('font-weight','normal').eq(i).css('font-weight','bold');
  $('#slides div').css('display','none').eq(i).css('display','block');
}
$(document).ready(function(){
  $('#switches li').mouseover(function(event){
    switchTo($('#switches li').index(event.target));
  });
  switchTo(0);
});

<ul id="switches">
 
<li>
First slide
</li>

 
<li>
Second slide
</li>

 
<li>
Third slide
</li>

 
<li>
Fourth slide
</li>


</ul>


  Well well.
  Oh no!
  You again?
  I'm gone!

如果用户关闭了javascript,使用很少的HTML标记并且javascript可读性强,这将显示所有幻灯片。 switchTo函数采用一个索引号,其中的
<MMKG1>
/ 对将被激活,将所有相关元素重置为其默认样式(列表项为非粗体,DIV为display:none),并设置所需的list-itemdivbolddisplay。只要客户端启用了javascript,功能将与您的原始示例完全相同。


这是jQuery版本:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<script type="text/javascript" src="http://jqueryjs.googlecode.com/files/jquery-1.2.6.min.js">
<script type="text/javascript">
$(function () {
    $("#switches li").mouseover(function () {
        var $this = $(this);
        $("#slides div").hide();
        $("#slide" + $this.attr("id").replace(/switch/,"")).show();
        $("#switches li").css("font-weight","normal");
        $this.css("font-weight","bold");
    });
});


<ul id="switches">
  <li id="switch1" style="font-weight:bold;">First slide
</li>

  <li id="switch2">Second slide
</li>

  <li id="switch3">Third slide
</li>

  <li id="switch4">Fourth slide
</li>


</ul>


  Well well.
  Oh no!
  You again?
  I'm gone!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<html>
<head>
<script type="text/javascript" src="jquery.js">
<script type="text/javascript">

$(document).ready(
  function(){
    $( '#switches li' ).mouseover(
      function(){
        $("#slides div" ).hide();
        $( '#switches li' ).css( 'font-weight', 'normal' );
        $( this ).css( 'font-weight', 'bold' );
        $( '#slide' + $( this ).attr( 'id' ).replace( 'switch', '' ) ).show();
      }
    );
  }
);


</head>
<body>
<ul id="switches">
  <li id="switch1" style="font-weight:bold;">First slide
</li>

  <li id="switch2">Second slide
</li>

  <li id="switch3">Third slide
</li>

  <li id="switch4">Fourth slide
</li>


</ul>


  Well well.
  Oh no!
  You again?
  I'm gone!

</body>
</html>

此代码唯一的错误(至少对我而言)是您没有使用循环来处理所有元素。除此之外,为什么不这样呢?

对于循环,我的意思是通过JQuery抓取容器元素并遍历所有子元素,基本上是单线的。


推荐阅读

    linux命令创建项目组?

    linux命令创建项目组?,管理,密码,项目,命令,系统,位置,文件,用户组,用户,文

    复制项目的linux命令?

    复制项目的linux命令?,系统,项目,文件,命令,目录,源文件,语法,选项,目标,功

    linux命令项目部署?

    linux命令项目部署?,项目,服务,环境,软件,系统,代理,管理,统一,做好,业务,怎

    linux命令筛选列表?

    linux命令筛选列表?,工具,状态,位置,工作,预期,命令,名称,标准,数据,系统,在L

    linux部署项目的命令?

    linux部署项目的命令?,项目,系统,设备,环境,工作,基础,传播,信息,标准,代码,L

    linux项目常用命令?

    linux项目常用命令?,工作,地址,系统,信息,管理,项目,命令,目录,标准,网络,lin

    linux项目更新命令?

    linux项目更新命令?,系统,信息,网络,地址,网站,通信,管理,时间,项目,命令,lin

    启动项目命令linux?

    启动项目命令linux?,工作,经理,产品,技术,地址,数字,系统,项目,命令,信息,怎

    linux的长列表命令?

    linux的长列表命令?,工作,系统,信息,命令,数据,目录,电脑,软件,时间,设备,Lin

    linux编译项目的命令?

    linux编译项目的命令?,系统,工作,地址,软件,工具,信息,代码,项目,命令,环境,l

    linux目录列表命令?

    linux目录列表命令?,系统,信息,标准,工作,命令,地址,时间,数据,名称,目录,lin

    项目linux常用命令?

    项目linux常用命令?,工作,地址,系统,管理,设备,信息,项目,命令,目录,标准,lin

    linux上部署项目命令?

    linux上部署项目命令?,项目,软件,服务,工具,环境,代理,地址,代码,首页,做好,l

    linux创建项目命令?

    linux创建项目命令?,名称,新增,项目,文件,命令,首次,工作,时间,文件夹,文件

    linux项目部署命令?

    linux项目部署命令?,项目,服务,软件,环境,系统,代理,代码,统一,数字,基础,怎

    python能做什么项目

    python能做什么项目,项目,数据,基础,图片,信息,工具,网站,概念,代码,基本知

    Python常见的列表

    Python常见的列表,合法,数据,概念,下来,较大,培训,数组,列表,类型,声明,pyth