0

我在点击时使用一个简单的 jquery 函数显示一个隐藏的登录 div。

function showLog(){
 $('#signin_menu').slideDown();
}

当用户在框外单击时,我将如何编辑它以隐藏 div?

div html(如果需要)

<div id="signin_menu" >
 <p>
      <label for="email">Email</label>
      <input type="email" name="email" id="email" tabindex="4" title="email">
      </p>
      <p>
        <label for="password">Password</label>
        <input type="password" name="password" id="password" title="password" tabindex="5">
      </p>
      <p class="remember">
         <input type="button" class="button-link" name="submit" style="cursor:pointer" id="submit" value="Log In" onclick="logMeIn()" tabindex="6">

        <input id="remember" name="remember_me" value="1" tabindex="7" type="checkbox">
        <label for="remember">Remember me</label>
      </p>

  </div>
4

3 回答 3

0
$(document).click(function(e) {
    if (e.target.id && ((e.target.id !== "signin_menu") || $("#signin_menu").find($(e.target)))) {
        $("#signin_menu").slideDown();
    }   
});
于 2013-01-05T21:41:10.320 回答
0
var $e = $('#signin_menu');
$(document).click(function(event){
   if (!$(event.target).closest('#signin_menu').length && event.target.id !== 'showlog') {
     $e.slideUp();
   }
});

http://jsfiddle.net/7SCN5/

于 2013-01-05T21:42:08.087 回答
0
function showLog(){
    var $element = $("signin_menu");
    $('body').click(function(e){
    if (e.target.id !== "signin_menu"  && !$element.find(e.target).length)
        $element.slideDown();
    }); 
}

或使用委托事件:

$('body').on('click', ':not(#signin_menu)', function(){
    $('#signin_menu').slideDown();
});
于 2013-01-05T21:33:57.370 回答