2010-02-23 21 views
5

HTMLjQuery sự kiện thay đổi trên một số không được kích hoạt thông qua chức năng khác thay đổi thuộc tính chọn

<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")); 
    }) 

đó, như là, hoạt động. Nếu tôi nhấp vào một mục trong đa lựa chọn, cảnh báo sẽ được kích hoạt.

Tuy nhiên, khi tôi chọn 'một yếu tố từ menu chọn qua jQuery như vậy:

$('#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"); 
     } 
    }) 

kịch bản đó làm việc ở chỗ nó làm thay đổi thuộc tính CHỌN và trực quan cập nhật danh sách tùy chọn, tuy nhiên sự kiện onchange không được kích hoạt trong kịch bản đó.

Tại sao lại như vậy?

Trả lời

11

Thay đổi các thành phần có mã như vậy không kích hoạt trình xử lý sự kiện. Tuy nhiên, bạn có thể tự làm điều đó:

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

'doh! Tất nhiên! Cảm ơn! –

+0

hi pointy .. Tôi đã phải đối mặt với một vấn đề khá giống với câu hỏi này .. Tôi có một lựa chọn đa thả xuống tôi muốn kích hoạt sự kiện onchange. nhưng tôi không kích hoạt. làm thế nào tôi có thể đạt được điều này? cảm ơn trước – chhameed

+1

Với các yếu tố ''. – Pointy

Các vấn đề liên quan