获取包含特定单词的选定元素 - jquery

时间:2012-09-20 08:16:35

标签: jquery

我想检查所选项目是否包含特定单词。例如:

  <select name='project_type' id='type'>
  <option value='1'>Interpretation - S</option>
  <option value='2'>Interpretation - K</option>
  <option value='5'>Editing</option>
  <option value='7'>Translation</option>
  </select>

Jquery的:

<script type="text/javascript">
$(document).ready(function(){

        //Hide div w/id extra
       $("#work1").show();
       $("#work2").hide();
        // Add onclick handler to checkbox w/id selected
       $("#type").live('click', function(){

        // If checked
        if (!$("#type:selected").text(contains('interpretation')))
        {
            //show the hidden div
            $("#work1").show();
                    $("#work2").hide();
        }
        else    if ($("#type:selected").text(contains('interpretation')))
        {
            //otherwise, hide it
            $("#work2").show();
                    $("#work1").hide();
        }
      });

    });
</script>

我需要在文本中获取包含“解释”的所选元素(我想要包含该单词的所有元素)。我做了这个:$("#type:selected").text(contains('interpretation'))但不起作用。 拜托,有人可以帮忙吗?

4 个答案:

答案 0 :(得分:2)

$('#type').change(function() {
    if ($(this).find(':selected').text().indexOf('Interpretation') > -1) {
        alert('selected value contains interpretation');    
    }
});​

http://jsfiddle.net/HyG6D/

答案 1 :(得分:2)

尝试:

index = $("#type:selected").text().indexOf('interpreatation');
if(index == -1)
    //Show
else
    //Hide

JavaScript没有任何名为contains的函数,已知的解决方法是检查特定短语或单词的索引。如果它不存在则返回-1。

编辑:更改了问题代码中的隐藏/显示。

答案 2 :(得分:0)

由于'type'是 select 标记的ID,因此您的选择器将无效。:selected伪选择器需要位于选项标签,而不是选择标签。在id ='type'的select标签中找到选定的选项标签 ,如下所示:

!$("#type option:selected").text(contains('interpretation')){ ...

请参阅: http://api.jquery.com/selected-selector/

“所选的选择器适用于<option>元素......”

更新:我没注意到您的配方没有正确使用.contains
.contains()测试一个DOM元素是否包含另一个DOM元素。所以,相反,将我对选择器的上述建议与Zerkim的解决方案结合起来,以达到:

!$("#type option:selected").text().indexOf('Interpretation') > -1)

...为你的病情。

答案 3 :(得分:0)

这可能会有所帮助吗?

$("#type option").each(function(k,v){

    if($(v).text().indexOf('interpreatation') != -1){

       //do something or add element to an array


    }

});