2010-02-23 37 views
5

HTMLjQuery的變化事件未通過其他函數變化選擇屬性

<select multiple="multiple" id="myID" name="myName"> 
    <option value="blue">blue</option> 
    <option value="red">red</option> 
    <option value="green">green</option>     
</select> 

jQuery的觸發:

$('select') 
    .change(function(){ 
     alert("Change Event Triggered On:" + $(this).attr("value")); 
    }) 

在於,如,工作。如果我單擊多選中的某個項目,則會觸發警報。

然而,當我通過jQuery「選擇」從選擇菜單中的元素,像這樣:

$('#myOtherSelector') 
    .click(function(){ 
     var $matchingOption = [goes and selects the specific OPTION to toggle] 
     if ($matchingOption.attr("selected")){ 
      $matchingOption.removeAttr("selected") 
     }else{ 
    $matchingOption.attr("selected","selected"); 
     } 
    }) 

該腳本的工作,因爲它改變了選擇的屬性和視覺更新選項列表,但onchange事件在這種情況下不會被觸發。

這是爲什麼?

回答

11

用這樣的代碼更改元素只是不會觸發事件處理程序。然而,你可以自己動手:

else { 
    $matchingOption.attr('selected', 'selected').trigger('change'); 
} 
+0

'doh!當然!謝謝! – 2010-02-23 20:34:18

+0

嗨pointy ..我遇到了一個問題,是非常相似的這個問題..我有一個多選擇下拉我想觸發onchange事件。但我不會觸發。我怎麼能做到這一點?在此先感謝 – chhameed 2011-06-21 14:37:33

+1

通過'」的用戶活動中進行動態更改。 – Pointy 2011-06-21 17:59:29