JQuery在select列表中设置选定的属性
我有以下的HTML
<select id="dropdown"> <option>A</option> <option>B</option> <option>C</option> </select>
我有string“B”,所以我想设置选定的属性,所以它会是:
<select id="dropdown"> <option>A</option> <option selected="selected">B</option> <option>C</option> </select>
我将如何在JQuery中做到这一点?
如果您不介意稍微修改您的HTML以包含选项的value
属性,则可以显着减less执行此操作所需的代码:
<option>B</option>
至
<option value="B">B</option>
这将有助于你想要做这样的事情:
<option value="IL">Illinois</option>
有了这个,下面的jQuery将做出改变:
$("select option[value='B']").attr("selected","selected");
如果您决定不使用value
属性,则需要循环显示每个选项,然后手动检查其值:
$("select option").each(function(){ if ($(this).text() == "B") $(this).attr("selected","selected"); });
<select id="cars"> <option value='volvo'>volvo</option> <option value='bmw'>bmw</option> <option value='fiat'>fiat</option> </select> var make = "fiat"; $("#cars option[value='" + make + "']").attr("selected","selected");
如果您使用的是JQuery,因为1.6必须使用.prop()方法:
$('select option:nth(1)').prop("selected","selected");
我将遍历选项,将文本与我想要select的内容进行比较,然后在该选项上设置选定的属性。 一旦你find正确的,终止迭代(除非你有一个多选)。
$('#dropdown').find('option').each( function() { var $this = $(this); if ($this.text() == 'B') { $this.attr('selected','selected'); return false; } });
您可以按照danielrmt的.selectedIndex策略,但根据选项标签中的文本来确定索引,如下所示:
$('#dropdown')[0].selectedIndex = $('#dropdown option').toArray().map(jQuery.text).indexOf('B');
这可以在不使用值属性的情况下在原始HTML上运行。
你可以使用纯粹的DOM。 见http://www.w3schools.com/htmldom/prop_select_selectedindex.asp
document.getElementById('dropdown').selectedIndex = 1;
但jQuery可以帮助:
$('#dropdown').selectedIndex = 1;
码:
var select = function(dropdown, selectedValue) { var options = $(dropdown).find("option"); var matches = $.grep(options, function(n) { return $(n).text() == selectedValue; }); $(matches).attr("selected", "selected"); };
例:
select("#dropdown", "B");
$('#select_id option:eq(0)').prop('selected', 'selected');
这很好
这可以是一个解决scheme
$(document).on('change', 'select', function () { var value = $(this).val(); $(this).find('option[value="' + value + '"]').attr("selected", "selected"); })
东西沿线…
$('select option:nth(1)').attr("selected","selected");