jQuery更改悬停点击

时间:2014-04-14 20:52:41

标签: jquery hover click html-lists

我修改了以下代码并用.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');
    });

});

} 

3 个答案:

答案 0 :(得分:1)

您可以使用jQuery' .toggle()

$(SELECTOR).toggle(function () {
    // State 1
}, function () {
    // State 2
});

jQuery Docs

答案 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){ //... }); 上发生点击时,您可能会做相反的事情。