有没有更短的方法来编写这个Jquery代码?

时间:2012-06-20 05:07:00

标签: javascript jquery

如果我需要预先选择具有特定值的下拉选项,我可以使用:

$('select option[value="123"]').attr('selected', 'selected');

但如果我需要根据其中包含的文字预先选择一个选项,我需要完成所有这些:

        $('select option').each(function() {
            var $this = $(this);
            if($this.text() == 'My Text') {
                $this.attr('selected', 'selected');
            }
        });

有没有办法在没有循环遍历所有选项标签的情况下执行此操作,例如第一种方式但是基于文本而不是值?

4 个答案:

答案 0 :(得分:2)

查看:contains()选择器。

http://api.jquery.com/contains-selector/

$('select option:contains("My Text")').prop('selected', true);

答案 1 :(得分:1)

使用:contains选择器。例如:

$('select option:contains("My Text")').attr('selected', 'selected');

答案 2 :(得分:0)

我会使用filter()我认为会比:contains选择器更快:

$('select option')
  .filter(function(){ return $(this).text() === 'my text' })
  .prop('selected', true)

答案 3 :(得分:0)

:contains放在一边

$('select option').each(function() {
    this.selected = this.text == 'lol2'
});