【问题标题】:jQuery hover show div togglejQuery 悬停显示 div 切换
【发布时间】:2012-07-30 15:50:24
【问题描述】:

我正在开发这个非常简单的网站,但自从我摆弄 jQuery 以来已经有一段时间了,我认为我在这里做错了。

在这里你可以用 jsFiddle http://jsfiddle.net/rGb34/1/预览这个想法

jQuery 存在一些问题。

  1. 如果您将鼠标悬停在黄色按钮上,黄色内容将开始切换。
  2. 如果您将鼠标悬停在按钮上,然后将其移开,则 div 会消失(由于切换功能),但我希望即使没有悬停也能激活最后一个 div。

有没有人给我一个好的提示,让我可以完成这个?

【问题讨论】:

  • 我不确定我是否正确理解了这一点 - 这就是你想要的:jsfiddle.net/RPMSZ?我省略了css。另外,请注意 dom 元素中更重要的 id 的不稳定性 :) 我想您将类与 id 混淆了。
  • 嗯.. id 应该是唯一的.. 看起来您的 id 和 class 混淆了,因为您的课程是唯一的,并且您的 id 对于所有四个 div 都是相同的

标签: javascript jquery html hover toggle


【解决方案1】:

首先:不要将相同的 id 名称与另一个标签一起使用。在您的示例中,它是 id="slider" 。

Here is jsFiddle to play with (I have edited your html and css too)

你可以用这种方式做到这一点,更可靠:

jQuery:

jQuery(document).ready(function() {

    $('.greenC, .blueC, .orangeC').hide();

    $('.nav li').hover(function() {
        var takeClass = $(this).attr('class');
       // takes class hovered element. example: '.yellow'

        $('.slider').hide();
        $('.'+ takeClass + 'C').show();// shows the element '.yellowC'
    });

});​

你的html应该是这样的:

<div class="yellowC slider">...</div>
<div class="greenC slider">...</div>
<div class="blueC slider">...</div>
<div class="orangeC slider">...</div>

<div class="wrap">
  <ul class="nav">
     <li class="yellow"><a href="./" class="y_button">Fiducairy services</a></li>
     <li class="green"><a href="./" class="g_button">Licensing</a></li>
     <li class="blue"><a href="./" class="b_button">Payment processing</a></li>
     <li class="orange"><a href="./" class="o_button">E-zone colocation</a></li>
   </ul>
</div>​

【讨论】:

  • 哇,这看起来是一段非常漂亮的代码。您能否解释一下“takeclass”在 takeClass + 'C' 中的作用,因为 classnmes 末尾已经有一个 C 了?
  • 是的,你可以随心所欲地改变它,只需要在 jQuery 上匹配它们。
  • inspect html carey= container:
    和 nav:
  • ,当导航元素悬停时,我在 jQuery 上匹配它们。
  • 这样啊!这是非常聪明的。非常感谢,你让我意识到我需要重新学习编程。
  • np 朋友,我很高兴我能帮上忙(:
  • 【解决方案2】:

    $('.green, .blue, .orange, .yellow').hide();如果你也隐藏黄色,它对我来说很好..这是你想要的吗?

    【讨论】:

      【解决方案3】:

      如果您希望第一个 div 在加载时正确显示,您必须更具体地指定您的 .yellow 事件处理程序

      $('.y_active, .yellow').hover(
      function() {
          $('.yellow').show();
          $('.green').hide();
          $('.blue').hide();
          $('.orange').hide();
      }, function() {
          $('.yellow').hide();
      });
      

      DEMO

      【讨论】:

        猜你喜欢
        相关资源
        最近更新 更多
        热门标签