2

我正在尝试实现以下行为:

当单击带有 DivA id 的链接“选项”时,DivB 应显示为淡入效果。如果我再次单击“选项”链接以及单击页面中除 DivB 之外的任何其他位置,则 DivB 应该再次消失。

这是我的 HTML 代码:

<a href="..." id="DivA">Option</a>
<div id="DivB">
  <ul>
    <li>A</li>
    <li>B</li>
    <li>C</li>
  </ul>
</div>

这是我的 JQuery 代码。这是错误的,如果 DivB 被隐藏并且我单击文档中的任意位置,则会出现 DivB。

<script type="text/javascript">
    $(document).click(function () {
        $("#DivB").fadeToggle("200");
    });
    $("#DivA").click(function () {
        e.stopPropagation();
        return false;       
    });
</script>

哪里错了?感谢帮助。

4

4 回答 4

4

Live Demo

$(function() {
  $(document).on("click",function (e) {
     if (e.target.id=="DivA") {
       $("#DivB").fadeToggle(200);
       e.stopPropagation();
       return false;
     }
     else if ($("#DivB").is(":visible")) {
       $("#DivB").fadeOut(200);
     }
  });
});
于 2013-10-29T12:56:20.127 回答
1
<script>
    $(document).on('click', function( evt ) {
        evt.stopPropagation();
        if ( evt.target.id == 'DivA' || $('#DivB').is(':visible')) 
             $('#DivB').fadeToggle();
    });
</script>

小提琴:http: //jsfiddle.net/nR6e3/1/

于 2013-10-29T13:07:55.533 回答
0
$(document).on("click",function () {
   if ($("#DivB").is(":visible")){
       $("#DivB").fadeOut(200);
   }
});

$("#DivA").click(function (e) { // you need place 'e'(for event handling)
    $("#DivB").fadeIn(200);
    e.stopPropagation();
    return false;       
});
于 2013-10-29T13:02:21.547 回答
0
    $(document).mouseup(function(e) {
        var container = $("your selector here");
    
        // if the target of the click not the container or not a descendant of that container
        if (!container.is(e.target) && container.has(e.target).length === 0) {
            container.hide();
        }
    });
于 2021-01-12T12:44:53.813 回答