首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Jquery/Js:基于复选框选项值的隐藏/显示Divs

Jquery/Js:基于复选框选项值的隐藏/显示Divs
EN

Stack Overflow用户
提问于 2012-05-29 04:29:24
回答 4查看 3.7K关注 0票数 0

这些是动态依赖的选择控件。(1-3,4-6,7-9)的一组值决定了使用隐藏/显示divs函数。问题是,根据div id,我只能隐藏/显示函数。如何使函数隐藏/显示div取决于选择框中的值(1-3、4-6、7-9)?

Jquery

代码语言:javascript
运行
复制
$('#select').change(function() {
   $('#sub1, #sub2, #sub3').hide();
   $('#sub' + $(this).find('option:selected').attr('id')).show();
});

Html设置

代码语言:javascript
运行
复制
<html>
<select size="6" id="category">
     <option value="">categories 1-3 </option>
     <option value="">----</option>
     <option value="">----</option>
</select>

<div id="sub1" style="display:none">
<select name="subc1" size="6">
     <option value="1">subcategories 4-6</option>
     <option value="2">---</option>
     <option value="3">---</option>
</select>
</div>

<div id="sub2" style="display:none">
<select name="subc2" size="6">
      <option value="4">subcategories 7-9</option>
      <option value="5">----</option>
      <option value="6">----</option>
</select>
</div>

<div id="sub3" style="display:none">
<select name="subc3" size="6">
      <option value="7">End</option>
      <option value="8">----</option>
      <option value="9">----</option>
</select>   
</div>
</html>
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-05-29 05:12:53

您需要更改您的类别select中的小更改

代码语言:javascript
运行
复制
<select size="6" id="category">
     <option value="1">categories 1-3 </option>
     <option value="2">----</option>
     <option value="3">----</option>
</select>


$('select#category').on('change', function() {
  $('div[id=^sub]:visible').hide();
  $('div#sub' + this.value).show();
});

也可以使用.change()代替.on('change')

代码语言:javascript
运行
复制
 $('select#category').change(function() {
  $('div[id=^sub]:visible').hide();
  $('div#sub' + this.value).show();
});

注:

$('div[id=^sub]:visible')将指向所有具有idsubvisible开始的div

您正在尝试使用$('#select'),它需要是$('#category')$('select#category')

根据您的评论:

完整的解决方案如下所示:

代码语言:javascript
运行
复制
function isOnlyDashed(text) {
    return text.replace(/-/g, '').length === 0;
}

$('select#category').change(function() {
    var text = $('option:selected', this).text();
    if (!isOnlyDashed(text)) {
        $('div[id=^sub]:visible').hide();
        $('div#sub' + this.value).show();
    }
});


$('select[name^=subc]').change(function() {
    var text = $('option:selected', this).text();
    if (!isOnlyDashed(text)) {
        $(this).parent() // jump to parent div
        .next('div[id^=sub]:hidden') // go to next hidden div
        .show();
    }
});

完全锻炼

票数 0
EN

Stack Overflow用户

发布于 2012-05-29 04:42:17

从下拉更改函数中选择值,并根据下拉值执行操作,下面是示例代码

代码语言:javascript
运行
复制
$(function() // Shorthand for $(document).ready(function() {
      $('select').change(function() {
            if($(this).val() == 1)
            {
              $('#sub1').hide();
              $('#sub2').show();
            }
      });
});
票数 1
EN

Stack Overflow用户

发布于 2012-05-29 04:37:50

代码的问题是您的选择器不正确。

代码语言:javascript
运行
复制
$('#select')...

应该是

代码语言:javascript
运行
复制
$('select')...

另外,这部分是错误的

代码语言:javascript
运行
复制
  $('#sub' + $(this).find('option:selected').attr('id')).show();

用这个代替它

代码语言:javascript
运行
复制
  $('#sub' + $(this).val()).show();

最后,使用同名/id "sub1“的不同元素可能是个坏主意,尽管在技术上并不违法。这无疑是令人困惑的。

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

https://stackoverflow.com/questions/10793078

复制
相关文章

相似问题

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