【问题标题】:jQuery get the name of a select optionjQuery获取选择选项的名称
【发布时间】:2013-09-12 22:03:27
【问题描述】:

我有一个包含多个选项的下拉列表,每个选项都有一个名称属性。 When I select an option, a different list of checkboxes needs to appear - when another options is selected, that checkbox list should disappear and another one be displayed.

我已经创建了这些复选框列表,并为它们提供了一个与所选选项的名称属性相关的 ID。我正在尝试使用以下代码来显示正确的复选框列表

$(document).ready(function(){

       $('#band_type_choices').on('change', function() {         
    $('.checkboxlist').hide();
    $('#checkboxlist_' + $(this).attr("name") ).css("display", "block");

});

但是什么都没有发生。

这是我的下拉选项:

<select id="band_type_choices">
    <option vlaue="0"></option>
    <option value="100" name="acoustic">Acoustic</option>
    <option value="0" name="jazz">Jazz/Easy Listening</option>
    <option value="0" name="acoustic_jazz">Acoustic + Jazz/Easy Listening</option>
    <option value="0" name="party">Party</option>
    <option value="0" name="acoustic_party">Acoustic + Party</option>
    <option value="0" name="jazz_party">Jazz/Easy Listening + Party</option>
    <option value="0" name="acoustic_jazz_party">Acoustic + Jazz/Easy Listening + Party</option>
 </select>

以及其中一个列表的示例:

<div class="checkboxlist" id="checkboxlist_acoustic" style="display:none;">
<input type="checkbox" class="checkbox keys" name="keys" value="100" />Keys<br>
<input type="checkbox" class="checkbox acou_guit" name="acou_guit" value="100" />Acoustic Guitar<br>
<input type="checkbox" class="checkbox drums" name="drums" value="100" />Drums<br>
<input type="checkbox" class="checkbox alt_sax" name="alt_sax" value="100" />Alto Sax<br>
<input type="checkbox" class="checkbox ten_sax" name="ten_sax" value="100" />Tenor Sax<br>
<input type="checkbox" class="checkbox clarinet" name="clarinet" value="100" />Clarinet<br>
<input type="checkbox" class="checkbox trombone" name="trombone" value="100" />Trombone<br>
<input type="checkbox" class="checkbox trumpet" name="trumpet" value="100" />Trumpet<br>
<input type="checkbox" class="checkbox flute" name="flute" value="100" />Flute<br>
<input type="checkbox" class="checkbox cello" name="cello" value="100" />Cello<br>
<input type="checkbox" class="checkbox violin" name="violin" value="100" />Violin<br>
</div>

【问题讨论】:

  • 那是无效的html。选择上没有名称属性

标签: jquery hide attr


【解决方案1】:

对于像我这样迟到的人。

正如其他人所说,name 不是 option 元素的有效属性。将上面接受的答案与answer from this other question 结合起来,您会得到:

$(this).find('option:selected').text();

【讨论】:

    【解决方案2】:

    在您的代码中this 指的是选择元素而不是选定的选项

    要引用所选选项,您可以这样做 -

    $(this).find('option:selected').attr("name");
    

    【讨论】:

    • 使用.text(); 而不是.attr("name"); 来获取所选选项的文本
    【解决方案3】:

    代码很简单,让我们把这段代码写出来

    var name = $("#band_type_choices  option:selected").text();
    

    这里你不想用$(this).find().text(),直接把你的id名字加上 option:selectedtext()

    这将返回结果选项名称。最好试试这个...

    【讨论】:

    • 这正是我想要的。谢谢。
    【解决方案4】:

    首先name 不是option 元素的有效属性。相反,您可以使用 data 参数,如下所示:

    <option value="foo" data-name="bar">Foo Bar</option>
    

    您遇到的主要问题是 JS 正在查看 select 元素的 name 属性,而不是选择的选项。试试这个:

    $('#band_type_choices').on('change', function() {         
        $('.checkboxlist').hide();
        $('#checkboxlist_' + $('option:selected', this).data("name")).css("display", "block");
    });
    

    注意select 上下文中的option:selected 选择器引发了更改事件。

    【讨论】:

    • 这是一个有效且好的答案。如果有更好的方法,那就去吧……
    • @tonygil 我完全不知道你的评论在说什么。这没有任何意义。我只能假设您在您的评论被删除之前回复了评论?
    【解决方案5】:
     $(this).attr("name") 
    

    表示选择标签的名称而不是选项名称。

    获取选项名称

     $("#band_type_choices option:selected").attr('name');
    

    【讨论】:

      【解决方案6】:

      在选择选项上使用名称无效。

      其他人建议使用 data- 属性,另一种方法是查找表

      这里的“this”指的是选择所以不需要“找到”选项

      var names = ["", "acoustic", "jazz", "acoustic_jazz", "party", "acoustic_party", "jazz_party", "acoustic_jazz_party"];
      
      $(function() {
        $('#band_type_choices').on('change', function() {
          $('.checkboxlist').hide();
          var idx = this.selectedIndex;
          if (idx > 0) $('#checkboxlist_' + names[idx]).show();
        });
      });
      .checkboxlist { display:none }
      Choose acoustic to see the corresponding div
      
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
      <select id="band_type_choices">
        <option vlaue="0"></option>
        <option value="100" name="acoustic">Acoustic</option>
        <option value="0" name="jazz">Jazz/Easy Listening</option>
        <option value="0" name="acoustic_jazz">Acoustic + Jazz/Easy Listening</option>
        <option value="0" name="party">Party</option>
        <option value="0" name="acoustic_party">Acoustic + Party</option>
        <option value="0" name="jazz_party">Jazz/Easy Listening + Party</option>
        <option value="0" name="acoustic_jazz_party">Acoustic + Jazz/Easy Listening + Party</option>
      </select>
      <div class="checkboxlist" id="checkboxlist_acoustic">
        <input type="checkbox" class="checkbox keys" name="keys" value="100" />Keys<br>
        <input type="checkbox" class="checkbox acou_guit" name="acou_guit" value="100" />Acoustic Guitar<br>
        <input type="checkbox" class="checkbox drums" name="drums" value="100" />Drums<br>
        <input type="checkbox" class="checkbox alt_sax" name="alt_sax" value="100" />Alto Sax<br>
        <input type="checkbox" class="checkbox ten_sax" name="ten_sax" value="100" />Tenor Sax<br>
        <input type="checkbox" class="checkbox clarinet" name="clarinet" value="100" />Clarinet<br>
        <input type="checkbox" class="checkbox trombone" name="trombone" value="100" />Trombone<br>
        <input type="checkbox" class="checkbox trumpet" name="trumpet" value="100" />Trumpet<br>
        <input type="checkbox" class="checkbox flute" name="flute" value="100" />Flute<br>
        <input type="checkbox" class="checkbox cello" name="cello" value="100" />Cello<br>
        <input type="checkbox" class="checkbox violin" name="violin" value="100" />Violin<br>
      </div>

      【讨论】:

        猜你喜欢
        • 2017-07-27
        • 2020-03-15
        • 2020-01-13
        • 1970-01-01
        • 2012-11-24
        • 1970-01-01
        • 1970-01-01
        • 2012-04-28
        • 2011-03-22
        相关资源
        最近更新 更多