用jQuery文本内容select选项

我想设置一个下拉框,通过查询string使用jQuery的传递。

如何将选定的属性添加到一个选项,使“TEXT”值等于查询string中的某个参数?

$(document).ready(function() { var cat = $.jqURL.get('category'); if (cat != null) { cat = $.URLDecode(cat); var $dd = $('#cbCategory'); var $options = $('option', $dd); $options.each(function() { if ($(this).text() == cat) $(this).select(); // This is where my problem is }); }; }); 

replace这个:

 var cat = $.jqURL.get('category'); var $dd = $('#cbCategory'); var $options = $('option', $dd); $options.each(function() { if ($(this).text() == cat) $(this).select(); // This is where my problem is }); 

有了这个:

 $('#cbCategory').val(cat); 

调用select列表中的val()将自动select具有该值的选项(如果有的话)。

我知道这个问题太旧了,但是,我认为这种方法会更清洁:

 cat = $.URLDecode(cat); $('#cbCategory option:contains("' + cat + '")').prop('selected', true); 

在这种情况下,你不需要遍历each()的整个选项。 虽然到那个时候prop()不存在,所以老版本的jQuery使用attr()


UPDATE

在使用contains时候必须要确定,因为你可以find多个选项,如果cat里面的string匹配一个不同于你打算匹配的选项的子string。

那么你应该使用:

 cat = $.URLDecode(cat); $('#cbCategory option') .filter(function(index) { return $(this).text() === cat; }) .prop('selected', true); 

如果你的<option>元素没有value属性,那么你可以使用.val

 $selectElement.val("text_you're_looking_for") 

但是,如果<option>元素具有值属性,或者将来可能会这样做,那么这将不起作用,因为只要有可能, .val将通过其value属性而不是其文本内容来select一个选项。 没有内置的jQuery方法,如果选项具有value属性,将通过其文本内容select一个选项,所以我们必须添加一个简单的插件:

 /* Source: https://stackoverflow.com/a/16887276/1709587 Usage instructions: Call jQuery('#mySelectElement').selectOptionWithText('target_text'); to select the <option> element from within #mySelectElement whose text content is 'target_text' (or do nothing if no such <option> element exists). */ jQuery.fn.selectOptionWithText = function selectOptionWithText(targetText) { return this.each(function () { var $selectElement, $options, $targetOption; $selectElement = jQuery(this); $options = $selectElement.find('option'); $targetOption = $options.filter( function () {return jQuery(this).text() == targetText} ); // We use `.prop` if it's available (which it should be for any jQuery // versions above and including 1.6), and fall back on `.attr` (which // was used for changing DOM properties in pre-1.6) otherwise. if ($targetOption.prop) { $targetOption.prop('selected', true); } else { $targetOption.attr('selected', 'true'); } }); } 

在将jQuery添加到页面上之后,只需将该插件添加到某处即可

 jQuery('#someSelectElement').selectOptionWithText('Some Target Text'); 

select选项。

插件方法使用filter来挑选出匹配targetText的option ,并使用.attr.propselect它,具体取决于jQuery版本(请参阅.prop()和.attr() )。

下面是一个JSFiddle,你可以使用这个问题的三个答案,这表明这是唯一可靠的工作: http : //jsfiddle.net/3cLm5/1/