我修改了以下代码并用.click替换了.hover。除了没有“offclick”功能外,一切正常。有了.hover,这没有问题。如何添加到此帐户以单击该元素。单击“关闭”,“外部”等时,应该“隐藏”ul可见性
$(document).ready(function(){
if($("ul.dropdown").length) {
$("ul.dropdown li").dropdown();
}
});
$.fn.dropdown = function() {
return this.each(function() {
$(this).click(function(){
$(this).addClass("click");
$('> .dir',this).addClass("open");
$('ul:first',this).css('visibility', 'visible');
},function(){
$(this).removeClass("click");
$('.open',this).removeClass("open");
$('ul:first',this).css('visibility', 'hidden');
});
});
}
答案 0 :(得分:1)
您可以使用jQuery' .toggle()
。
$(SELECTOR).toggle(function () {
// State 1
}, function () {
// State 2
});
答案 1 :(得分:0)
这是如何检查用户点击外面的方式
$(document).click(function () {
//hide ul there
});
$(this).click(function(event){
event.stopPropagation(); // this forbid parent clicks (on document)
$(this).addClass("click");
$('> .dir',this).addClass("open");
$('ul:first',this).css('visibility', 'visible');
});
答案 2 :(得分:0)
hover
事件实际上有两种状态,换句话说,对于hover
事件,在场景后面使用了两个不同的事件,这些事件是mouseenter
和{{1}因此,当您将鼠标悬停在某个元素上时,mouseleave
事件会被触发,并且在悬停该元素时会触发mouseenter
事件,因此在这种情况下,您无法将此事件转换为{{1}使用两个方法(如mouseleave
),您只需为该元素声明一个click
事件处理程序(函数)。例如,您可以执行以下操作:
hover
如果要在单击另一个元素时更改元素的状态,那么您应该捕获该元素的click事件,因此单击另一个元素可能会执行相反的操作。例如,您可以在click
上注册点击事件,以便在$('#element').on('click', function(e){
//...
});
上发生点击时,您可能会做相反的事情。