【问题标题】:Javascript - From hover to clickJavascript - 从悬停到点击
【发布时间】:2015-02-12 19:18:31
【问题描述】:

如何将其从悬停更改为单击?

$(function(){
    $('ul#menu li').hover(function(){
        //$('#drop' , this).css('display','block');
         $(this).children('ul').delay(20).slideDown(600);
    }, function(){
         $(this).children('ul').delay(20).slideUp(600);
    });
});

Fiddle

【问题讨论】:

标签: javascript hover click


【解决方案1】:

click 只需要一个处理程序; hover 的独特之处在于它需要两个。您需要使用单个处理程序:

$(function(){
    $('ul#menu li').on('click', function(){
         // note using slideToggle which automatically switches
         // btwn up/down
         $(this).children('ul').delay(20).slideToggle(600);
    });
});

http://jsfiddle.net/8g7ead5x/1/


或者,根据骗子,您可以使用.toggle

$(function(){
    $('ul#menu li').toggle(function(){
        //$('#drop' , this).css('display','block');
         $(this).children('ul').delay(20).slideDown(600);
    }, function(){
         $(this).children('ul').delay(20).slideUp(600);
    });
});

【讨论】:

  • 谢谢,但它有一些错误,不是吗?单击一次,菜单会向下滑动,但是如果单击应该打开另一个菜单的最后一个项目,它会关闭第一个菜单...
  • 您必须阻止点击冒泡。不过,这超出了您的问题范围。 (在 StackOverflow 上的大约 12000 个其他问题中也详细介绍了这一点。)
【解决方案2】:

只需将函数名称hover改为click即可。它是 jQuery 的一部分。


使用@Mathletics 示例。 click 函数只接受一个函数,因此您必须更改代码。我用一个工作示例 (Fiddle) 修改了你的 Fiddle,所以现在你有了第三种选择。

【讨论】:

  • 您能否在click 函数中包含console.log 以确保调用该函数?
  • 什么?哈哈,我对 js 了解不多……如果我发布了整个事情的小提琴,这样你就可以看到正在运行的脚本会有所帮助吗?
  • 是的,这会很有帮助。
  • 小提琴已添加。怎么做才能使您必须单击菜单才能触发上滑/下滑。谢谢。
  • @bvx89 您不能直接更改它,因为 click 处理程序不采用两种方法,不像 hover 那样。您必须重新编写处理程序才能在状态之间切换。
猜你喜欢
  • 2016-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-20
  • 1970-01-01
  • 1970-01-01
  • 2022-09-23
  • 2020-12-31
相关资源
最近更新 更多