jQuery获取选择选项的名称

Sam*_*row 22 jquery hide attr

我有一个带有几个选项的下拉列表,每个选项都有一个名称属性.当我选择一个选项时,需要显示一个不同的复选框列表 - 当选择另一个选项时,该复选框列表应该消失,另一个显示.

我创建了这些复选框列表,并为它们提供了与所选选项的name属性相关的ID.我试图使用以下代码来显示正确的复选框列表

$(document).ready(function(){

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

});
Run Code Online (Sandbox Code Playgroud)

然而,什么也没发生.

这是我的下拉选项:

<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>
Run Code Online (Sandbox Code Playgroud)

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

<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>
Run Code Online (Sandbox Code Playgroud)

jge*_*man 50

对于像我这样迟到的人来说.

正如其他人所说,name不是option元素的有效属性.将上面接受的答案与其他问题答案结合起来,得到:

$(this).find('option:selected').text();
Run Code Online (Sandbox Code Playgroud)


Moh*_*dil 39

在您的代码中this引用select元素而不是选定的选项

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

$(this).find('option:selected').attr("name");
Run Code Online (Sandbox Code Playgroud)

  • 使用`.text();`而不是`.attr("name");`来获取所讨论选定选项的文本 (15认同)

小智 7

代码很简单,放上这段代码

var name = $("#band_type_choices  option:selected").text();
Run Code Online (Sandbox Code Playgroud)

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

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


Ror*_*san 5

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

<option value="foo" data-name="bar">Foo Bar</option>
Run Code Online (Sandbox Code Playgroud)

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

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

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


Man*_*u M 5

 $(this).attr("name") 
Run Code Online (Sandbox Code Playgroud)

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

获取选项名称

 $("#band_type_choices option:selected").attr('name');
Run Code Online (Sandbox Code Playgroud)