当前位置:  开发笔记 > 编程语言 > 正文

jQuery - 通过文本描述设置选择控件的选定值

如何解决《jQuery-通过文本描述设置选择控件的选定值》经验,为你挑选了10个好方法。

我有一个选择控件,在一个javascript变量中我有一个文本字符串.

使用jQuery我想将select控件的selected元素设置为具有我所拥有的文本描述的项目(而不是我没有的值).

我知道按值设置它是非常微不足道的.例如

$("#my-select").val(myVal);

但是通过文字描述我有点难过.我想必须有一种从文本描述中获取价值的方法,但是我的大脑在星期五下午也可以解决它.



1> Crescent Fre..:

鉴于此HTML:

var text1 = 'Two';
$("select option").filter(function() {
  //may want to use $.trim in here
  return $(this).text() == text1;
}).prop('selected', true);

按jQuery v1.6 +的描述选择:



按描述选择1.6以下且大于或等于1.4的jQuery版本:https: //stackoverflow.com/a/3644500/31532

var text1 = 'Two';
$("select option").filter(function() {
  //may want to use $.trim in here
  return $(this).text() == text1;
}).attr('selected', true);

请注意,虽然此方法适用于1.6以上但小于1.9的版本,但自1.6以来已被弃用.它不适用于jQuery 1.9+.

按以前版本的说明选择:

val()应该处理这两种情况.你没有看到它吗?

例如:




请注意,如果已指定属性,jQuery 1.4现在已更改此行为以选择"value",并且仅在缺少`value`属性时才按文本选择.所以在这个例子中`$('select').val('Two')`将选择1.3.x中的第二个选项,但在1.4.x中什么都不做.
那么,现在1.4中最好的方法是什么?
这感觉它应该不起作用(看起来它可能是模棱两可的)但它实际上应该对我很好.谢谢.
这个问题的第一个答案似乎是1.3.x之后的解决方案http://stackoverflow.com/questions/3644449/jquery-setting-select-list-selected-based-on-text-failing-strangely
在更新版本的jQuery中,.val('not-an-option-value')会将select重置为第一个选项.
jQuery可以有一个内置函数来做到这一点!它旨在简化DOM操作

2> spoulson..:

我没有测试过这个,但这可能对你有用.

$("select#my-select option")
   .each(function() { this.selected = (this.text == myVal); });



3> Jay Corbett..:

试试这个......选择带有文本myText的选项

$("#my-Select option[text=" + myText +"]").attr("selected","selected");


在许多情况下,这种方法不幸地不起作用.我甚至不得不解决经典的`$("#my-Select选项[text ="+ myText +"]").get(0).selected = true;`风格不时:( ...
确保在重新设置之前首先删除所选属性,否则它将显示不起作用(适用于1.9)
@MarkW For 1.9,使用`.prop`代替`.attr`; 改变的原因是在1.9中jQuery禁用了旧的hacks,让你使用`.attr`来改变一些DOM属性以及HTML属性.(谷歌`javascript dom properties vs attributes`如果你不知道区别.)

4> ErazerBrecht..:

我是这样做的(jQuery 1.9.1)

$("#my-select").val("Dutch").change();

注意:不要忘记更改(),我不得不搜索到因为那个:)


希望我可以多次投票。离开时间已经一个小时了,现在我可以回家了。

5> Russ Cam..:
$("#myselect option:contains('YourTextHere')").val();

将返回包含您的文字说明的第一个选项的值.经过测试并且有效.



6> Dave..:

为了避免所有jQuery版本的复杂性,我老实说建议使用其中一个非常简单的javascript函数...

function setSelectByValue(eID,val)
{ //Loop through sequentially//
  var ele=document.getElementById(eID);
  for(var ii=0; ii


@Neal呃......它回答了这个问题?

7> Losbear..:

我知道这是一篇旧帖子,但我无法通过使用jQuery 1.10.3及上述解决方案的文本进行选择.我最终使用了以下代码(spoulson解决方案的变体):

      var textToSelect = "Hello World";

      $("#myDropDown option").each(function (a, b) {
            if ($(this).html() == textToSelect ) $(this).attr("selected", "selected");
        });

希望它可以帮助某人.



8> Diego Unanue..:

这条线有效:

$("#myDropDown option:contains(myText)").attr('selected', true);



9> aWebDevelope..:
 $("#Test").find("option:contains('two')").each(function(){
     if( $(this).text() == 'two' ) {
        $(this).attr("selected","selected");
     }
 });

if语句与"two"完全匹配,"two three"将不匹配



10> 小智..:

1.7+的最简单方法是:

$("#myDropDown option:text=" + myText +"").attr("selected", "selected"); 

1.9+

$("#myDropDown option:text=" + myText +"").prop("selected", "selected"); 

经过测试和工作.

推荐阅读
LEEstarmmmmm
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有