从 ios 上的选择选项中隐藏/显示 div - 不工作

Posted

技术标签:

【中文标题】从 ios 上的选择选项中隐藏/显示 div - 不工作【英文标题】:hide/show div from select option on ios - not working 【发布时间】:2018-05-10 09:32:41 【问题描述】:

基于选择选项的显示/隐藏 div 在桌面上运行良好,但在 ios 设备上运行良好。我确信有更好的方法来构建我的 jQuery 来满足这个要求。在 ios native 下拉菜单中,您可以勾选所有选择选项,还必须选择和取消选择才能看到下一个选项。我需要能够一次选择一个选项。

$( function() 
        $( '#storeselector' ).on( 'input propertychange', function() 
            $( '.store-hide' ).hide();
            $( '#' + $(this).val() ).show();
        );
    );
.store-right 
  float: right;


.i-store 
  font-size: 3rem;
  font-family: "Avenir Next", sans-serif;
  font-style: normal;
  font-weight: 600;
  color: inherit;
  text-rendering: optimizeLegibility;
  line-height: 1.2;
  display: block;
  margin: auto;
  text-align: right;
  padding-right: 4%;


.store-img 
  max-width: 1150px;
  width: 100%;
  margin: auto;
  display: block;


.store-hide 
  display: none;


.store-block 
  width: 100%;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="storeselector" tabindex="2" multiple size="3">
  <option value="level-lg">
    Lower Ground
  </option>
  <option value="level-g">
    Ground Floor
  </option>
  <option value="level-one">
    Level 1
  </option>

</select>

<div id="level-lg" class="store-hide store-block" style="display: block">
  <div class="col-lg-12">
    <span class="i-store">
                                LG
                            </span>
    <img class="store-img" src="https://www.ctshirts.com/on/demandware.static/-/Sites/default/dw468e879c/UK/SS18/Book6/hp-recs1_UK.jpg"  title="">
  </div>
</div>
<div id="level-g" class="store-hide store-block">
  <div class="col-lg-12">
    <span class="i-store">
                                G
                            </span>
    <img class="store-img" src="https://www.ctshirts.com/on/demandware.static/-/Sites/default/dwc0f6b72a/UK/SS18/Book6/hp-recs2_UK.jpg"  title="">
  </div>
</div>
<div id="level-one" class="store-hide store-block">
  <div class="col-lg-12">
    <span class="i-store">
                                1
                            </span>
    <img class="store-img" src="https://www.ctshirts.com/on/demandware.static/-/Sites/default/dwe06b0b29/UK/SS18/Book6/hp-recs3_UK.jpg"  title="">
  </div>
</div>

【问题讨论】:

您的问题到底是什么?正如你的帖子现在看起来的那样,它可能只会引发很多毫无意义的讨论。你能说得更具体点吗? 请编辑您的问题并删除最后一条评论。这是正确的做法。有空可以看看这个:***.com/help/how-to-ask 【参考方案1】:

您应该使用input event 而不是change event。因为change event 可能不适用于所有浏览器。

Change 事件在大多数浏览器中在内容发生更改并且元素失去焦点时触发,基本上是更改的集合。与输入事件不同,您不会看到每次更改都会触发此事件。

Input 事件在元素内容更改时同步触发。所以你会看到这个事件更频繁地发生。浏览器支持各不相同。

因此,input 事件对于跟踪 &lt;select&gt; 字段更改非常有用。但是IE version &lt; 9 不支持它。但较旧的 IE 版本有自己的专有事件 onpropertychange,其作用与 oninput 相同。因此,您可以通过这种方式使用它来获得完整的跨浏览器支持。:

$( selector ).on( 'input propertychange' );

所以,你的 javascript 代码必须是这样的:

$( function() 
    $( '#storeselector' ).on( 'input propertychange', function() 
        $( '.store-hide' ).hide();
        $('#storeselector option:selected' ).each( function() 
            $( '#' + $(this).val() ).show();
         )
     );
 );

【讨论】:

好建议!但是,这并不能解决 ios 上的问题。仍然必须选择和取消选择才能看到下一个选项。 您必须使用 JQuery each() 方法。 each() 方法指定为每个匹配元素运行的函数。我更新代码。请检查一下。 不成功 - 我仍然必须取消选择上一个选项并选择下一个选项才能在 IOS 上查看下一个选项

以上是关于从 ios 上的选择选项中隐藏/显示 div - 不工作的主要内容,如果未能解决你的问题,请参考以下文章

在 IOS Safari 上使用 Select (Dropdown) 的 JQuery 显示/隐藏问题

当我们选择“全部”选项时如何显示/隐藏 div

Javascript 隐藏/显示部分在重置时不起作用

基于两个单选按钮和选择选项的jQuery显示和隐藏divs

使 div 出现在动态选项选择上

显示和隐藏一组 div