2010-02-03 94 views
1

我有一個隱藏的窗體與列表,我需要從用戶想要查看此窗體時選擇一個選項。 我正在使用 var assignee ='persons name'; jQuery('#edit-form'option [value ='+ option +']:first')。attr(「selected」,「selected」);麻煩選擇與jQuery的選擇框中的項目與

我試着這樣做,但這不是工作作爲選項標記值不符合\指定的那樣好,所以它不會找到一個匹配

jQuery('#edit-form option[value='+option.replace(/\'/,'\\\'')+']:first').attr("selected", "selected"); 

所以這樣做是這個以下是我唯一的選擇?

jQuery('#edit-form option').each(function(){ 
    if(jQuery(this).val() == option) {   
    jQuery(this).attr("selected", "selected"); 
    return false; 
    } 
}); 

測試頁

<html> 
<head> 
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script> 

    <script> 
    //test vars 
    var option1 = "option two"; 
    var option2 = "option '"; 
    var option = option2; 

    $(document).ready(function(){ 
    $('#edit-form [name=select1] option').each(function(){ 
     if($(this).val() == option) {   
    $(this).attr("selected", "selected"); 
    return false; 
     } 
    }); 

    $('#edit-form [name=select2] option[value='+option+']:first').attr("selected", "selected"); 
    option = option.replace(/\'/,'\\\''); 
    $('#edit-form [name=select3] option[value='+option+']:first').attr("selected", "selected"); 
    }); 
    </script> 
</head> 
<body> 
    <form id="edit-form"> 
    <select name=select1> 
    <option value="option one">option one</option> 
    <option value="option two">option two</option> 
    <option value="option two">option two</option> 
    <option value="option \'">option \'</option> 
    <option value="option '">option '</option> 
    </select> 
    <select name=select2> 
    <option value="option one">option one</option> 
    <option value="option two">option two</option> 
    <option value="option two">option two</option> 
    <option value="option \'">option \'</option> 
    <option value="option '">option '</option> 
    </select> 
    <select name=select3> 
    <option value="option one">option one</option> 
    <option value="option two">option two</option> 
    <option value="option two">option two</option> 
    <option value="option \'">option \'</option> 
    <option value="option '">option '</option> 
    </select> 
</body> 
</html> 

回答

2

什麼:

jQuery('#edit-form option[value="'+option+'"]:first').attr("selected", "selected"); 

注意使用"'字符。

E.g.這些都是有效的字符串:

"Valid 'string'" 
'valid "string"' 
// also valid with escape chars 
"valid \"string" 
'valid \'string' 

但這些

"not valid "string"" 
'not valid 'string'' 

你也可以看到這與語法高亮顯示。

編輯:

工作對我來說,如果我用這個:

$('#edit-form select[name="select3"] option[value="'+option+'"]').first().attr("selected", "selected"); 

注:我用.first(),而不是:first和適當select[name="select3"]。確保您使用正確的jQuery選擇器。

+0

謝謝,但如果你已經嘗試過的例子頁面,你會看到,這是行不通的。 – Cornelis 2010-02-03 13:03:15

+0

@Cornelis:它適用於我,添加了我使用的正確命令。 – 2010-02-03 13:43:09

+0

好的,這確實使它的工作!謝謝你,jQuery在我看到的時候表現怪異。 – Cornelis 2010-02-03 13:45:32