2012-04-16 80 views
1

我有以下HTML定義我的選擇:的jQuery選擇選項現在的工作(通過名稱)

<select name="zoom_cat[]" style="margin-left:15px;"> 
    <option value="-1" selected="selected">All</option> 
    <option value="0">News</option> 
    <option value="1">Publications</option> 
    <option value="2">Services</option> 
    <option value="3">Industries</option> 
</select> 

,我試圖設置選定的選項全部(值-1)。出於某種原因,這個jQuery代碼是沒有效果(相同的選項保持選中狀態):

$('input[name="zoom_cat[]"] option[value="-1"]').attr('selected', 'selected'); 

有人能告訴我有什麼不對的,以及如何解決它?謝謝!

+1

請參閱http://stackoverflow.com/questions/1280499/jquery-set-select-index/ duplicate – 2012-04-16 21:53:27

+0

您試圖將'select'元素(儘管在選擇器中使用「input」)設置爲值已經選擇了'option',你驚訝它沒有改變任何東西? – 2012-04-16 21:53:29

回答

4
$('select[name="zoom_cat[]"] option[value="-1"]').attr('selected', 'selected'); 

,而不是input

+0

'selected'是屬性('prop()'),不是屬性。 [JS Fiddle](http://jsfiddle.net/davidThomas/L7BkN/)。 – 2012-04-16 21:55:42

+0

@DavidThomas,prop和attr都可以工作,如果你正確使用它們的話。這裏使用attr沒有錯。更改選定的屬性也會自動更改屬性,反之亦然。 ('selected'):selected''.prop('selected'):true' – Geekfish 2012-04-16 22:03:37

0

馬特上面說的,你應該在你選擇使用select,不input,它們是不同的元素。同時設置所選屬性將不會在< = IE7上工作,所以理想情況下您應該這樣做$('select[name="zoom_cat[]"]').val('-1');

0

您需要在選擇器中轉義特殊字符。

參見: http://api.jquery.com/category/selectors/

那麼試試這個來代替:

$( '輸入[名稱= 「zoom_cat \\ \\]」]選項[值= 「 - 1」]')。 attr('selected','selected');

+0

沒有必要轉義任何東西... – Geekfish 2012-04-16 22:05:17

+1

您必須在jquery選擇器中轉義方括號才能正常工作IE7。 – 2012-04-16 22:30:16

+0

啊我看到了,我不知道這個 - 感謝提示! – Geekfish 2012-04-16 22:45:38

0

你可以這樣做:(不ATTR的建議由一個人而託)

$( '選擇[NAME = 「zoom_cat []」]選項[值= 「 - 1」]')丙(。 'selected','selected');