【问题标题】:Select a list item from dropdown to open modal? Should I use jquery/js?从下拉列表中选择一个列表项以打开模式?我应该使用 jquery/js 吗?
【发布时间】:2015-11-18 06:46:30
【问题描述】:

我正在尝试创建一个包含一些列表项的下拉列表,当用户选择某个“时间”(例如“稍后”)时,会触发稍后打开的模式。 (原始代码是选择/选项,但我有 javascript 将其转换为 ul/li 以进行样式设置。)

这是列表项代码。

<ul class="select-options" style="display: none;">
   <li value="asap">Delivery ASAP</li>
   <li value="later">Delivery Later</li>
   <li value="catering">Catering</li>
</ul>

这是模态代码。

    <div class="later-modal">
        <p>Select a time to deliver.</p>
    </div>

<div class="catering-modal">
        <p>Select a time to cater.</p>
    </div>

我应该使用 if/else 语句来打开模式吗?我现在不确定该怎么做。我也没有使用任何类型的引导程序。

任何帮助将不胜感激,谢谢!

【问题讨论】:

    标签: javascript jquery list select


    【解决方案1】:

    我将下拉菜单转换为真正的下拉菜单(选择元素)。

    解决办法如下:

    $('li').click(function(){
      $('.modal').hide();
      $('.' + $(this).attr('data-value') + '-modal').show();
      $('#dropdown').removeAttr('checked');
    });
    label {
      cursor:pointer;
      border:1px solid silver;
      border-radius:5px;
      padding:2px;
    }
    
    ul {
      list-style:none;
      padding:2px;
      margin:0;
      border:1px solid silver;
      border-radius:5px;
      position:absolute;
    }
    
    li {
      margin:0;  
      cursor:pointer;
    }
    
    #dropdown {
      display:none;
    }
    
    .select-options {
      opacity:0;
      transition:all .2s ease;
    }
    
    #dropdown:checked + .select-options {
      opacity:1;  
    }
    
    .modal {
      display:none;
      background:rgba(0,0,0,0.8);
      position:absolute;
      top:50%;
      left:50%;
      transform:translate(-50%, -50%);
      background:#000;
      color:#fff;
      padding:10px;
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    
    <label for="dropdown">Choose time</label>
    <input type="checkbox" id="dropdown" />
    
    <ul class="select-options">
       <li data-value="asap">Delivery ASAP</li>
       <li data-value="later">Delivery Later</li>
       <li data-value="catering">Catering</li>
    </ul>
    
    <div class="modal later-modal">
      <p>Select a time to deliver.</p>
    </div>
    
    <div class="modal catering-modal">
      <p>Select a time to cater.</p>
    </div>

    【讨论】:

    • 尽管它确实使用选择/选项打开,但我在 html 中将其更改为 li。也许这会有所帮助?有没有办法让它返回到 li 而不是选项? jsfiddle.net/utxeLb0b@moshfeu
    • @BeckyT 我更新了我的代码 + 我为“下拉式”添加了一些功能。如果您不需要它,请将其删除。
    【解决方案2】:

    在我复制坏代码块之前我很抱歉...试试这个

    $(document).ready(function() {
      $("#later").click(function() {
        $(".later-modal").toggle();
      });
      
      $("#catering").click(function() {
      $(".catering-modal").toggle();
      });
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
    <ul class="select-options" style="display: block;">
      <li value="asap">Delivery ASAP</li>
      <li id="later" value="later">Delivery Later</li>
      <li id="catering" value="catering">Catering</li>
    </ul>
    
    <div class="later-modal" style="display: none;">
      <p>Select a time to deliver.</p>
    </div>
    
    <div class="catering-modal" style="display: none;">
      <p>Select a time to cater.</p>
    </div>

    【讨论】:

    • 谢谢!有没有办法让列表项中的“稍后”值打开而不是选择所有 li? @ZAJDAN
    • 看我的回答。这段代码不太正确,也不是通用的。
    • 有点不明白你的意思_'列表项中的值要打开而不是选择所有li?'_ @Becky T
    猜你喜欢
    • 2010-09-26
    • 1970-01-01
    • 2014-08-01
    • 2017-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-13
    相关资源
    最近更新 更多