Javascript 如何捕获';车身';和内部';车身';页面中的事件[Jquery]

Javascript 如何捕获';车身';和内部';车身';页面中的事件[Jquery],javascript,jquery-selectors,jquery,Javascript,Jquery Selectors,Jquery,我的当前代码的作用: 我有这个HTML <li> <span>Logged in as</span>&nbsp; <a class="user" href="#"><?php echo $this->loggedas ?></a>&nbsp; <a id="loginarrow" href="javascript: void(0);"></a> </l

我的当前代码的作用: 我有这个HTML

 <li>
   <span>Logged in as</span>&nbsp;
   <a class="user" href="#"><?php echo $this->loggedas ?></a>&nbsp;
   <a id="loginarrow" href="javascript: void(0);"></a>
 </li>
它的工作很好,但我可以关闭它再次点击。 我不想,所以我想,如果它打开,我点击背景,所以它必须关闭。 为此,我这样做了

 $("#loginarrow,body").click(function() {
   $("#logindrop").toggle("slow");
   return false;
 });
现在它的工作很酷,但还有另一个问题

1=我在页面(正文)中有许多其他html元素,其中有其他事件要调用。因此,在本例中,每当我单击页面中的其他元素时,就会切换my this div逻辑

我想要相同的功能,但不是在我的其他元素上,只是在后台。
任何提示

仅当其可见时才关闭

$("body").click(function() { 
   if ($("#logindrop").is(":visible"))
      $("#logindrop").hide("slow");       
});

只有当它可见时才关闭它

$("body").click(function() { 
   if ($("#logindrop").is(":visible"))
      $("#logindrop").hide("slow");       
});

良好浏览器性能的一个基本设计原则是只捕获您感兴趣的事件

因此,在
元素上放置
.click()
处理程序,但在该处理程序中,在
主体上注册一个一次性事件处理程序,该处理程序将再次关闭它。类似于(未经测试):

这将确保您不会不必要地拦截对
正文的每次单击
,除非您确实需要这样做


​请参见

良好浏览器性能的基本设计原则是只捕获您感兴趣的事件

因此,在
元素上放置
.click()
处理程序,但在该处理程序中,在
主体上注册一个一次性事件处理程序,该处理程序将再次关闭它。类似于(未经测试):

这将确保您不会不必要地拦截对
正文的每次单击
,除非您确实需要这样做


​请参见

请格式化您的代码,这样我们就不必滚动它来阅读。好的,实际上在我的制作页面中,我正在这样做。我正在这样做it@Alnitak它现在由Zuul格式化请格式化您的代码,这样我们就不必滚动它来阅读了。好的,实际上在我的制作页面中,我正在这样做。我正在这样做it@Alnitak它现在由祖尔西尔格式化主席先生,我认为它会把它打开,把它藏起来。
$('#loginarrow').click(function() {
    $('#logindrop').show('slow');
    $('body').one('click', function() {
        $('#logindrop').hide('slow');
    });
    return false;
});