【问题标题】:jQuery 1.8.2 - how do I grab an option from a select with only the text?jQuery 1.8.2 - 如何从仅包含文本的选择中获取选项?
【发布时间】:2013-09-05 03:19:58
【问题描述】:

简单地说,使用这个:

<select id="Test">
    <option value="1">ABC</option>
    <option value="2">DEF</option>
</select>

如何使用 jQuery 仅使用“DEF”来获取 option[value="2"] - 请记住我使用的是 1.8.2

谢谢!

【问题讨论】:

    标签: jquery html jquery-1.8


    【解决方案1】:

    试试:contains() 选择器:

    $('#Test option:contains("DEF")')
    

    Fiddle

    请注意,:contains() 是通配符搜索。如果您需要完全匹配,我认为您只需要迭代或过滤选项并检查text()。这是一种可能性:

    http://jsfiddle.net/YuK2K/

    console.log(getOptionByText('Test', 'DEF'));
    
    function getOptionByText(id, value) {
        return $('#' + id).find('option').filter(function() {
           return $(this).text() == value; 
        });
    }
    

    【讨论】:

    • 不完全...如果选择是这样的,这将失败&lt;select id="Test"&gt; &lt;option value="1"&gt;DEFasfdas&lt;/option&gt; &lt;option value="2"&gt;ABC&lt;/option&gt; &lt;option value="3"&gt;DEF&lt;/option&gt; &lt;/select&gt;
    【解决方案2】:

    如果您确定之前出现的其他选项不包含该值,您可以使用contains。请注意,contains 是通配符匹配,而不是完全匹配。相反,您可以通过这种方式进行完全匹配。

    $('#Test option').filter(function () {
        return this.innerHTML === 'DEF'
    }).val();
    

    Fiddle

    【讨论】:

      【解决方案3】:

      有帮助吗?

      $( '#Test option' ).each( function() {
          if ( $( this ).html() == 'DEF' ) {
              alert( $( this ).val() );
          }
      } );
      

      【讨论】:

        【解决方案4】:
        $("select option:contains('ABC')")
        

        这里是示例 - http://jsfiddle.net/maximua/7fF7M/

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-12-09
          • 2020-04-21
          • 2018-01-05
          • 2010-12-09
          • 2010-11-26
          • 2011-08-06
          • 1970-01-01
          • 2021-10-27
          相关资源
          最近更新 更多