2014-09-23 45 views
0

爲什麼jquery包含不選擇具體的值,我想要選擇當我加載頁面。jquery設置文本選項列表生成php

<select class="form-control" style="width:120px; float:left;" name="namelist"> 
    <option value="">Pablo I</option> 
    <option value="">Pablo II</option> 
    <option value="">Pablo III</option> 
    <option value="">Pablo IV</option> 
</select> 

<script>    
    $('select[name=namelist] option:contains("Pablo II")').attr('selected','selected'); 
</script> 

選擇的結果是巴勃羅III

+4

'巴勃羅III'包含'巴勃羅II'所以在猜測其選擇最後的2對選擇匹配 – 2014-09-23 03:36:00

+0

手冊:含有表示*選擇包含指定文字的所有元素*,因爲它們都我是否會猜測兩者都被設置爲選中;但這隻適用於一個,所以瀏覽器正在使用最後一個 – 2014-09-23 03:40:27

回答

1

您需要使用.filter()因爲:contains()將返回部分匹配也

$('select[name=namelist] option').filter(function(){ 
 
    return $(this).text() == 'Pablo II' 
 
}).attr('selected','selected');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<select class="form-control" style="width:120px; float:left;" name="namelist"> 
 
    <option value="">Pablo I</option> 
 
    <option value="">Pablo II</option> 
 
    <option value="">Pablo III</option> 
 
    <option value="">Pablo IV</option> 
 
</select>

+0

,他可以只爲該選項指定一個值,並使這更容易? – 2014-09-23 03:44:26

+0

@Dagon是的,他可以.... – 2014-09-23 03:47:35

0

使用道具()的作品也很好 http://api.jquery.com/prop/

$('select[name=namelist] option').filter(function(){ 
 
    return $(this).text() == 'Pablo II' 
 
}).prop('selected', true);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<select class="form-control" style="width:120px; float:left;" name="namelist"> 
 
    <option value="">Pablo I</option> 
 
    <option value="">Pablo II</option> 
 
    <option value="">Pablo III</option> 
 
    <option value="">Pablo IV</option> 
 
</select>