首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于动态生成id的下拉显示/隐藏div

基于动态生成id的下拉显示/隐藏div
EN

Stack Overflow用户
提问于 2015-08-12 03:59:39
回答 1查看 1.8K关注 0票数 1

我试图建立一个机制,在一个页面上有多个select下拉列表,然后是基于活动选择显示或隐藏的div。这些下拉列表和div及其值是从数据库中动态提取的。

目前,我正在使用以下jquery脚本。

代码语言:javascript
复制
jQuery(document).ready(function () {

    jQuery(".drop-down-show-hide").hide();

    jQuery("#dropDown").change(function () {
       jQuery(".drop-down-show-hide").hide(); 
       jQuery("#" + this.value).show();
    });
  });

和下面的html代码;

代码语言:javascript
复制
<select id="dropDown">
<option>Select...</option>
<option value="choice-1">Choice 1</option>
<option value="choice-2">Choice 2</option>
<option value="choice-3">Choice 3</option>
</select>
<div id="choice-1" class="drop-down-show-hide">content</div>
<div id="choice-2" class="drop-down-show-hide">content</div>
<div id="choice-3" class="drop-down-show-hide">content</div>

<select id="dropDown">
<option>Select...</option>
<option value="choice-4">Choice 4</option>
<option value="choice-5">Choice 5</option>
</select>
<div id="choice-4" class="drop-down-show-hide">content</div>
<div id="choice-5" class="drop-down-show-hide">content</div>

这样,只有第一个下拉列表按需要工作:选择其中一个选项将显示该选项并隐藏其他选项。另一个下拉列表不起作用,它不会显示选项4或5,也不会隐藏选项1-3,因此这个下拉列表根本不起作用。

我实际上想要实现的行为是,每个下拉列表都只显示/隐藏作为选项提供的div。我应该能够根据数据库给每个下拉列表一个唯一的id,这样您就可以得到类似的信息;

代码语言:javascript
复制
<select id="uniquevalue1">
<select id="uniquevalue2">

那么,我的问题是如何调整jquery,以便它能够读取和处理惟一的值。我无法将惟一的id值硬编码到脚本中(就像我对dropdown所做的那样),因为它们是从数据库中动态提取出来的。有什么方法可以重写jquery来将所需的行为应用于页面上的任何下拉列表,还是其他方法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-12 04:06:15

id of select改为class。idDOM中应该始终是唯一的。但是class可以应用于多个元素。

演示

代码语言:javascript
复制
<select class="dropDown">
      ...
</select>
<select class="dropDown">
     ....
</select>

然后你的同样的代码就能工作了!

更新

为了达到您当前的要求,我建议您将您的下降率分组如下:

代码语言:javascript
复制
<div class="group"> <!--group each select and subsequent divs into a container-->
    <select class="dropDown">
        <option>Select...</option>
        <option value="choice-1">Choice 1</option>
        <option value="choice-2">Choice 2</option>
        <option value="choice-3">Choice 3</option>
    </select>
    <div id="choice-1" class="drop-down-show-hide">content1</div>
    <div id="choice-2" class="drop-down-show-hide">content2</div>
    <div id="choice-3" class="drop-down-show-hide">content3</div>
</div>
<div class="group"> <!--Same here for 2nd dropdown-->
    <select class="dropDown">
        <option>Select...</option>
        <option value="choice-4">Choice 4</option>
        <option value="choice-5">Choice 5</option>
    </select>
    <div id="choice-4" class="drop-down-show-hide">content4</div>
    <div id="choice-5" class="drop-down-show-hide">content5</div>
</div>

JS您可以在change事件中更新一行:

代码语言:javascript
复制
jQuery(".dropDown").change(function () {
       jQuery(this).closest('.group').find(".drop-down-show-hide").hide(); 
       //find select's parent and hide its corresponding divs only
       jQuery("#" + this.value).show();
});

演示

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31955771

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档