单击里面时,jquery下拉隐藏

时间:2014-01-31 14:45:25

标签: jquery typo3 dropdownbox

我是jQuery的新手,所以也许这是一个简单的问题,但到目前为止我还没有找到一个好的答案。也许我甚至找不到合适的关键词来搜索......

我有一个下拉登录表单。我在typo3中使用它。 问题是:loginform中的任何点击都会隐藏/切换drobdownbox。 这是脚本:

<script type="text/javascript">
            $(function() {
                var button = $('#loginButton');
                var box = $('#loginBox');
                var form = $('#loginForm');
                button.removeAttr('href');
                button.mouseup(function(login) {
                    box.slideToggle();
                    button.toggleClass('active');
                });
                form.mouseup(function() {
                    return false;
                    });
                $(document).mouseup(function(login) {
                    if(!($(login.target).parents('#loginButton').length > 0)) {
                        button.removeClass('active');
                        box.hide();
                    }
                });
            });

        </script>  

也许有人可以提供帮助? 提前致谢!

2 个答案:

答案 0 :(得分:0)

使用类似的东西:

    $('selector').mouseenter(function(){

    //do something when mouse is over
    }).mouseleave(function(){

    //do something when mouse out
    });

答案 1 :(得分:0)

来自jquery文档的

: 当鼠标指针悬停在元素上并释放鼠标按钮时,mouseup事件将发送到元素。

我猜:你想在这里使用点击事件处理程序吗?!

button.click(function() {
    box.slideToggle();
    button.toggleClass('active');
});

在这里,你绑定了你的typo3网站上发生的所有鼠标事件。 包括loginForm上面的那些!!所以它会在任何鼠标上隐藏你的表格

$(document).mouseup(function(login) {
    if(!($(login.target).parents('#loginButton').length > 0)) {
        button.removeClass('active');
        box.hide();
    }
});

你可能想试试这个:

$(document).bind("mouseup",function(e){
    console.log(e.target)
})

e.target会告诉你上面哪个div被释放了。 你可能想检查一下这样的东西:

$(document).mouseup(function(login) {
   if(login.target.id == "loginForm"){return false}

    if(!($(login.target).parents('#loginButton').length > 0)) {
        button.removeClass('active');
        box.hide();
    }
});
祝你好运!