【问题标题】:jquery dropdown div not quite workingjquery下拉div不太工作
【发布时间】:2011-01-18 13:20:18
【问题描述】:

当有人将鼠标悬停在链接上时,我正在尝试使 div 下拉。 div 里面是一个登录表单。以下代码仅适用于如果我将鼠标悬停在 div 确实出现的链接上。但是,当我将鼠标从链接向下移动到 div 上时,div 立即缩回。请看:

jQuery(document).ready(function() {
    jQuery('.slidedown').hide();
    jQuery('a.top-link-cart').hover( function(){ // 进入动画

    jQuery('.slidedown').stop(true,true).animate({
        高度:['切换','摆动'],
        }, 600, function() { /* 动画完成 */ });

    }, function(){ // 离开动画

jQuery('.slidedown').mouseout(function() {
   设置超时(函数(){
      jQuery('.slidedown').stop(true,true).animate({
          高度:'0px'}, 600, function(){});}, 200 ); // setTimeout 到此结束
}); // mouseout 到此结束
    });
});

我想要实现的只是让 div a)如果用户将鼠标从链接移到 div,则保持打开 b)如果用户将鼠标从链接移开但未移入 div,则关闭,c)如果用户移动,则关闭鼠标移出 div。我认为 .mouseout 函数会使 div 保持打开状态,这样我至少可以将鼠标移到它上面,但它不起作用。有任何想法吗?我会很感激这让我头疼了一个星期。谢谢。

【问题讨论】:

    标签: javascript jquery html


    【解决方案1】:

    您不应该使用.hover 而应使用.mouseover() 作为您的第一种方法。

    【讨论】:

    • 感谢让 div 保持向下,以便我可以将鼠标悬停在它上面。现在如何在这两个条件之后关闭它......我可能会制作一个 jsfiddle 用于输入。
    【解决方案2】:

    您可以将链接和执行动画的 div 包装在另一个 div 中,然后将悬停应用到父 div 而不是链接。这样你仍然会验证。例如:

    <div class="whatever">
        <a class="top-link-cart">Show login form</a>
        <div class="slidedown">form html goes here</div>
    </div>
    

    而 javascript 将是:

    jQuery(document).ready(function(){
        jQuery('.slidedown').hide();
        jQuery('.whatever').hover(function(){//to show
            jQuery('.slidedown').show('effect', duration in millisecs);
        }, function(){//to hide
            jQuery('.slidedown').hide('effect', duration in millisecs);
        });
    });
    

    这使用 jQueryUI 来实现动画效果,但如果您只需要 div 向上或向下滑动,您也可以使用 .slideDown() 和 .slideUp() 方法

    【讨论】:

      【解决方案3】:

      您需要将div.slidedown 嵌套在a.top-link-cart 中:

      <a class="top-link-cart">Show login form
          <div class="slidedown">
              The login form HTML
          </div>
      </a>
      

      忽略标准(像 &lt;div&gt; 标签这样的块元素不应该真正嵌套在像 &lt;a&gt; 标签这样的内联元素中),这会起作用,因为当 div.slidedown 扩展时,父&lt;a&gt;.

      这样,直到用户的鼠标离开&lt;a&gt;,mouseout 事件才会被触发。

      【讨论】:

      • 不确定我是否可以这样做,链接是由 php 动态生成的,我不能只打开一个文件并找到一些 html 来编辑该链接。
      • 看看@heymrcarter 的回答,如果您可以编辑 HTML / PHP,那应该可以完美运行。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-27
      • 1970-01-01
      • 2012-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多