【问题标题】:jQuery show/hide div with select options by namejQuery 显示/隐藏 div,按名称选择选项
【发布时间】:2015-06-27 09:57:17
【问题描述】:

我在显示/隐藏我的 div 时遇到问题,这取决于选定的值“名称”。

这是我的 HTML:

    <select name="selectVehicle" id="selectVehicle">
    <option name="A" value="A">Car</option>
    <option name="C" value="C">Truck</option>
    </select>
    <div id="A" class="vehicle">+Car+</div>
    <div id="C" class="vehicle" style="display:none;">+Truck+</div>

...还有我的 JS:

    $(function() {
        $('#selectVehicle').change(function(){
            $('.vehicle').hide();
            $('#' + $(this).val()).show();
        });
    });

https://jsfiddle.net/wgee7ekh/1/

【问题讨论】:

  • 您遇到了什么问题??
  • 现在它从值中选择它们,但我想按名称选择

标签: javascript jquery select show-hide


【解决方案1】:

以下是您根据name 属性进行选择的方法:

$(function() {
    $('#selectVehicle').change(function(){
        $('.vehicle').hide();
        $('#' + $(this).find('option:selected').attr('name')).show();
    });
});

这是JSFiddle

【讨论】:

    【解决方案2】:

    您可以使用:selected 获取所选选项的name 属性。

    $('#selectVehicle').change(function(){
        $('.vehicle').hide();
        $('#' + $(':selected',this).attr('name')).show();
    });
    

    Updated Fiddle

    【讨论】:

      【解决方案3】:

      问题是.change() 事件处理程序中的this&lt;select&gt; 元素,而不是选定的&lt;option&gt; 元素,但您需要选定&lt;option&gt; 元素的name 属性。

      您可以通过多种方式获得选定的选项。在纯 Javascript 中,您可以使用 .options 数组和 .selectedIndex 属性,就像在 this.options[this.selectedIndex] 中一样:

      $(function() {
          $('#selectVehicle').change(function(){
              $('.vehicle').hide();
              $('#' + this.options[this.selectedIndex].getAttribute("name")).show();
          });
      });
      

      jsFiddle:https://jsfiddle.net/jfriend00/upswtfeg/

      或者在 jQuery 中,你可以使用伪选择器:selected 像这样找到它:

      $(function() {
          $('#selectVehicle').change(function(){
              $('.vehicle').hide();
              $('#' + $(this).find('option:selected').attr('name')).show();
          });
      });
      

      jsFiddle:https://jsfiddle.net/jfriend00/ywkd25w8/

      【讨论】:

      • 能否请您解释一下如何使用 div id 实现这一目标?
      • @GabrielDichev - 我不明白你在问什么。我已经为这两个代码块包含了一个有效的 jsFiddle 演示,因此应该清楚它们是如何工作的。这两个示例都使用了 div id。你现在要求做一些不同的事情吗?
      • 我仍然不明白为什么这个答案被否决了。我看到了两个正确的例子来说明如何做到这一点。我看到了解释,这在 SO 中并不常见。那到底哪里不对了?
      • 我没有投反对票,但在那之前我已经有了答案。而不是按名称选择选项,我希望使用 HTML 标记 ID 。
      • @GabrielDichev - 这没有意义。 HTML 中的 &lt;option&gt; 元素没有任何 ID。就像您已经打上绿色复选标记的答案一样,它从 &lt;option&gt; 元素中获取 name 属性,然后将其用作 ID 值来显示正确的 div。
      猜你喜欢
      • 2018-04-17
      • 1970-01-01
      • 1970-01-01
      • 2014-04-21
      • 1970-01-01
      • 2012-03-24
      • 2015-07-07
      • 1970-01-01
      • 2011-07-16
      相关资源
      最近更新 更多