是否有与悬停相同的jQuery方法,只是使用鼠标单击代替
Is there a jQuery method identical to hover except uses mouse clicks instead?
有没有一种与悬停相同的方法,只是它使用鼠标单击而不是鼠标悬停? 用途是带有子菜单的垂直菜单。 悬停会使菜单过于生涩和不稳定。 HTML和伪JS代码在下面,它显示了我正在努力完成的任务。
<ul id="global-left-nav">
<li><span class="menu-header">Synthesizers</span>
<ul class="sub-cat">
<li><a href="#">Sub Cat 1</a></li>
<li><a href="#">Sub Cat 2</a></li>
<li><a href="#">Sub Cat 3</a></li>
</ul>
</li>
<li><span class="menu-header">Drum Machines</span>
<ul class="sub-cat">
<li><a href="#">Sub Cat 1</a></li>
<li><a href="#">Sub Cat 2</a></li>
<li><a href="#">Sub Cat 3</a></li>
</ul>
</li></ul>
$('.sub-cat').hide();
$('.menu-header').myTwoClickFunc(
//if clicked once
function() {
$(this).next('ul').slideDown();
$(this).next('ul').addClass('open');
$('ul.open').addClass('close');
},
//if clicked twice
function() {
$(this).next('ul').slideUp();
$(this).next('ul').addClass('close');
});
我认为切换可能会起作用,但它不会在 2 个回调函数之间交替。谢谢
你可以
这样做:
$('element').on('hover', function() { $(this).click() });
您可以切换一个类并在单击处理程序中使用 if 语句:
$('.menu-header').on('click', function() {
var $this = $(this);
if ($this.hasClass('open')) {
// close it
}
else
{
// open it
}
$this.toggleClass('open')
})
您能否提供悬停的示例,以便我们了解您所说的"太生涩和不稳定"的含义。 无论动作发生在click
还是hover
运行动画的内容都是相同的 - 触发它的只是不同的事件。
(function ($) {
$.fn.clickToggle = function (func1, func2) {
var funcs = [func1, func2];
this.data('toggleclicked', 0);
this.click(function () {
var data = $(this).data();
var tc = data.toggleclicked;
$.proxy(funcs[tc], this)();
data.toggleclicked = (tc + 1) % 2;
});
return this;
};
}(jQuery));
$('.menu-header').clickToggle(
function () {
$(this).next('ul').slideDown();
$(this).next('ul').addClass('open');
$('ul.open').addClass('close');
},
function () {
$(this).next('ul').slideUp();
$(this).next('ul').addClass('close');
});
或
使用 .one()
function second() {
$(this).next('ul').slideUp();
$(this).next('ul').addClass('close');
$('.menu-header').one('click',first);
}
function first() {
$(this).next('ul').slideDown();
$(this).next('ul').addClass('open');
$('ul.open').addClass('close');
$('.menu-header').one('click',second);
}
$('.menu-header').one('click',first);
相关文章:
- 用鼠标单击对象,使画布对象消失
- 如何在鼠标单击时更改KML多边形的颜色
- 禁用鼠标单击网格,当 ext.window 打开 extjs 3
- 角度 js - 如何用鼠标单击,然后在 ng-grid 上按 Enter 键
- 鼠标单击对象统一 5.3 UI
- 未在 jquery 中通过手动鼠标单击注册单击
- Jquery在页面重定向后执行鼠标单击
- 使用Firefox bookmarklet在元素上触发鼠标单击
- 如何在使用鼠标单击动态绘制多边形时在画布中拖放多边形
- 中断所有鼠标按下事件以模拟鼠标单击
- 按回车键而不是鼠标单击(角度模态 - 附有 Plunker)
- 如何获取和设置鼠标单击x,y打开的pdf文档的位置
- 如何使用鼠标单击和拖动来放大 D3
- 使用 Jquery 在鼠标单击时反转表单元素的位置
- 检测在 JavaScript 中按住鼠标单击
- 在鼠标单击时添加标记并删除打开图层中现有的标记
- 禁用键并鼠标单击Mozilla中的iframe
- 如何在鼠标单击时设置可拖动事件
- 识别在闪光灯元件上的鼠标单击
- 在 JavaScript 中模拟鼠标单击按钮