如何制作类似弹出窗口的div隐藏和显示?

11

我是jQuery的新手。我正在尝试在我的项目中创建一个搜索框功能。我创建了一个包含城市名称的div,希望它在单击按钮时显示。我能够使用jQuery的slideToggle()方法在按钮的单击事件中隐藏和显示该div。

但是当div被显示时,页面上的其他内容会受到干扰,这不是我所期望的行为。

以下是显示该div之前的页面:

输入图像描述

以下是显示该div后的页面:

输入图像描述

现在我希望将此div显示为弹出窗口,以便它不会干扰页面上的其他内容。

以下是HTML中搜索框部分的代码:

        <!--start SearchBox section-->
        <section id="searchbox"style="background:white">
            <div class="container" style="margin-top:0px;">


              <div class="row">

                    <div class="col-lg-12">


               <form style="">
                    <center>
                            <div id="SearchBoxBorder" style="background:white;border:2px solid #a1a1a1;border-radius:5px;margin-top:20px;width:800px;">
                            <table id="mytable" >
                                    <td style="width:300px;background:white;">
                                       <center> <div class="form-group">
                                                <input type="text" class="form-control" id="exampleInputEmail1" placeholder="I am looking for"
                                                    style="border-width:5px;background:white; margin-top:17px; margin-left:15px; margin-right:10px;width:300px;
                                                    border-style:solid;border-width:5px;border-color:#a1a1a1;font-family:Arial,Helvetica,sans-serif;height:42px; font-size:18px;">
                                        </div></center>
                                     </td>

                                     <td style="width:50px ;text-align:right;background:white;"> <center><strong> in</strong></center>    </td>

                                     <td style="width:400px;background:white;">
                                     <center>
                                             <div class="input-group">
                                                   <input type="text" class="form-control" placeholder="in locality"
                                                    style="border-width:5px;background:white; margin-top:0px; margin-left:10px; margin-right:20px;width:;font-size:18px;
                                                    border-style:solid;border-width:5px;border-color:#a1a1a1;font-family:Arial,Helvetica,sans-serif;height:42px;">
                                                   <div class="input-group-btn">
                                                            <button type="button" class="btn btn-default dropdown-toggle"  data-toggle="dropdown" id="dropdownBtn" 
                                                             style="background:white;border-top-width:5px;border-right-width:5px;border-bottom-width:5px;border-left-width:1px;
                                                             border-color:#a1a1a1;height:42px;border-radius:0px;text-align:center;color:black; margin-right:20px;">Select<span class="caret"></span></button>

                                                             <!--City dropdown -->
                                                                    <div class="SearchCities">
                                                                            <div id="outer" style="">



                                                                                        <div id="innerLeft" style="">
                                                                                            <h5 >North India:</h5>
                                                                                            <ul class="city" type="none";>
                                                                                                    <li><a>Delhi</a></li>
                                                                                                    <li><a>Agra</a></li>
                                                                                                    <li><a>Shrinagar</a></li>
                                                                                                    <li><a>Noida</a></li>
                                                                                                    <li><a>Himachal</a></li>
                                                                                                    <li><a>Patna</a></li>
                                                                                            </ul>

                                                                                        </div>

                                                                                        <div id="innerRight" style="">
                                                                                            <a class="close">&times;</a>
                                                                                            <h5>West India:</h5>
                                                                                            <ul class="city" type="none";>
                                                                                                    <li><a>Mumbai</a></li>
                                                                                                    <li><a>Pune</a></li>
                                                                                                    <li><a>Nashik</a></li>
                                                                                                    <li><a>Kolhapur</a></li>
                                                                                                    <li><a>Osmanabad</a></li>
                                                                                                    <li><a>Ahamdabad</a></li>
                                                                                            </ul>
                                                                                        </div>


                                                                            </div><!--/outer-->
                                                                        </div><!--/SearchCities-->


                                                             </div><!-- /btn-group -->
                                                   <button type="button" class="btn btn-primary" style="margin-right:20px;"><i class="icon-search" style="font-size:20px"></i>  Search</button>
                                             </div><!-- /input-group -->
                                           </center>         
                                     </td>

                            </table>
                        </center>
                    </form>

    </div><!--/col-lg-12-->
</div><!--/row-->
    </div><!--/end of container-->
</section>
<!--End of SearchBox section-->

以下是我的jQuery代码:

$(document).ready(function(){
  $(".SearchCities").hide();
  $("#dropdownBtn").click(function(){
  $(".SearchCities").slideToggle();
  });
});

欲了解更多我想做的事情,请访问:askme.com,在顶部看到一个搜索框并点击印度其他地区。

所以请您帮助我实现这个目标好吗?

先行致谢。


4
务必不要使用内联样式。为解决你的问题,请在你的菜单上尝试使用position: absolute - Bojangles
3个回答

11

您基本上有三种方式:

  1. 手动方式:将弹出式div设置为浮动,并将其绝对定位,然后将顶部设置为100%(这将使它看起来像弹出式菜单)。请确保父元素具有相对定位。

    HTML:

<div class="input-group" style="position: relative;">
  <div class="SearchCities">
    ...
  </div>
</div>

CSS:

.SearchCities {
  float: right;
  position: absolute;
  top: 100%;
}

JS:不需要更改

  • 使用jQueryUI的对话框插件:如nrsharma的答案所指出的那样,您可以使用一个jQuery插件使其看起来像一个弹出对话框。

  • $('.SearchCities').dialog({ autoOpen: false }); // Initialize dialog plugin
    $('.SearchCities').dialog("open"); // Open popup
    

    API参考:http://api.jqueryui.com/dialog/

    示例:http://jqueryui.com/dialog/

    插件下载:http://jqueryui.com/download/

  • 使用Bootstrap的下拉组件:从你的代码看,似乎你正在使用Bootstrap。你可以轻松使用Bootstrap的下拉菜单或模态框。

    Bootstrap模态框是弹出对话框,就像jQueryUI的对话框插件一样,但它们看起来更好,而且可定制性更强。请查看此处的示例:http://getbootstrap.com/javascript/#modals

    Bootstrap下拉菜单是简单的下拉菜单,但通过一些技巧,您可以在其中放置任何内容。

    您只需要一点HTML(不需要JavaScript):

    <div class="input-group dropdown">
      <button type="button" class="btn btn-default dropdown-toggle"
        data-toggle="dropdown" id="dropdownBtn" role="button">...</button>
      <div class="dropdown-menu SearchCities" role="menu">
        ...
      </div>
    </div>
    
    为了使其正常工作,您还需要包含Bootstrap js插件(bootstrap.js/bootstrap.min.js)。
    参考:http://getbootstrap.com/javascript/#dropdowns

  • 我们需要包含 bootstrap.css 吗? - wikimix
    是的,但你可以在下载bootstrap之前选择需要的功能来剥离它的无用特性。请参考https://dev59.com/wmQn5IYBdhLWcg3wIUBn - fbbdev

    5

    我可以轻松帮您完成以下操作

    HTML是一种标记语言

    <div class="dialogbox"> This is Dialogue box</div>
    <a id="click">click here</a>
    

    CSS

    .dialogbox{width:100px; height:100px; background:grey;display:none}
    

    JQUERY

    <script src="latest jquery library"></script>
    
        <script>
    
        $(document).ready(function(){
        $("#click").click(function(){
    
        $(".dialogbox").toggle();
    
        });
    
        });
       </script>
    

    是的,我们可以使用这个对话框,但是我们能否在其中放置链接,或者只允许放置文本。 - sachin_ware
    @user2681213 你可以放置文本以及链接。 - Dinesh Kanivu
    你能否在按钮上使用JavaScript来改变内容? - Mihai Bratulescu
    @MihaiBratulescu 当然可以。 - Dinesh Kanivu

    3
    你可以使用jQuery UI对话框轻松完成它。
    HTML:
    <div id="dialog" title="Basic dialog">
      <p>This is the default dialog which is useful for displaying information. The
         dialog window can be moved, resized and closed with the 'x' icon.</p>
    </div>
    

    JavaScript/jQuery:

    $(function() {
        $( "#dialog" ).dialog();
    });
    

    更多信息可以在这里找到。


    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接