选择选项中的查找选项在Chrome中失败并在IE中运行..为什么?

时间:2010-06-21 07:05:49

标签: jquery select google-chrome

我有一个包含多个项目的选择列表,我希望能够通过输入到某个文本字段中的文本进行过滤。如果您只是在迭代每个选项时执行js contains,这非常简单。但是在某些情况下有很多选项,所以我使用了jQuery:

var results = $("#myList options").find("option[text*=" + someVal.toUpperCase() + "]");

这在IE中工作得很好,但在Chrome中却没有,我根本找不到原因(Firebug在这个页面上根本不起作用,但这是暂时的。

也许是因为“text”实际上并不存在于html选项中,但是没有按值搜索也会失败。有什么想法吗?

3 个答案:

答案 0 :(得分:2)

这里有很多错误......

var results = $("#myList options").find("option[text*=" + someVal.toUpperCase() + "]");
 //                         ^              ^

上面的代码,将获得所有options'(带有s的选项)。然后查找包含someVal.toUpperCase()值的文本属性的子选项.......

我想你会想要这样,

var results = $("#myList option").map(function(){
                  if ($(this).text().indexOf(someVal)!= -1 ) { return this; }
              }).get();

答案 1 :(得分:2)

改为使用jQuerys .filter()

var results = $("#myList").children('option').filter(function(){ 
    return ( $(this).val().indexOf(someVal.toUpperCase()) > -1 );
});

答案 2 :(得分:1)

我刚刚在chrome上尝试了以下内容: http://jsbin.com/olida3/edit

正确警告“1”代表“测试”

$('#myList option[value*='+val+']');

或者您也可以像

一样编写它
$('option[value*='+val+']', '#myList');