【问题标题】:Jquery. Why this doesn't work?查询。为什么这不起作用?
【发布时间】:2010-01-03 16:49:26
【问题描述】:

这是html代码:

                   <a class="cat" href="#">category</a>
                 <span class="kiti" style="position:absolute; padding:5px; margin-left:-18px; display:none; background-color:#000">
                    <a href="#">sub1</a>
                    <br /><a href="#">sub2</a>
                    </span>

和functions.js

$(document).ready(function() {      
  $(".cat").hover(function() {
    $(this).next().slideDown(300);  
  });
  $(".cat").mouseout(function() {
    $('.kiti').slideUp(300);
  });
});

如何制作,它允许按 sub1 和 sub2,因为当我尝试时,子类别会隐藏。 谢谢。

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    试试:

    $(document).ready(function() {      
      $(".cat").hover(function() {
        $(this).next().stop().slideDown(300);
      }, function() {
        $(this).next().stop().slideUp(300);
      });
    });
    

    hover() 接受两个回调:第一个是当鼠标悬停在元素上时。第二个是鼠标离开的时候。

    请注意,您还缺少一些分号和其他语法问题。

    此外,建议在这种情况下使用stop() 动画,否则快速触发事件可能无法获得所需的结果。

    最后,我并不完全相信slideUpslideDown 会在使用内联元素时表现得如预期(即&lt;span&gt; 与块级元素相对)。想一想,这可能是你问题的根本原因。来自slideUp()

    通过调整隐藏所有匹配的元素 他们的身高和射击可选 完成后回调。

    内联元素不响应高度调整。所以你应该使用&lt;div&gt; 或使用特定的&lt;span&gt; display: block

    【讨论】:

    • 你的和卡里姆的都不行。也许我需要添加一个 id 或什么,我不知道。
    【解决方案2】:

    您没有正确应用hover。它需要两个函数作为参数(mouseover 和 mouseout)。试试:

    $(document).ready(function() {
        $(".cat").hover(function() { 
            $(this).next().slideDown(300); 
        }, function() { 
            $('.kiti').slideUp(300);     
        });
    });
    

    或普通的 mouseover/mouseout 等效项:

    $(document).ready(function() {
        $(".cat").mouseover(function() { 
            $(this).next().slideDown(300); 
        }).mouseout(function() { 
            $('.kiti').slideUp(300);
        });
    });
    

    【讨论】:

    • 写的和你写的不一样。您是否从此处复制/粘贴代码?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-04
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    相关资源
    最近更新 更多