2012-08-09 33 views
12

Tôi đã sau trong tiêu đề:jQuery On <select> Thay đổi tổ chức sự kiện Không Firing

$('body').on('change', '#userFilter', function(){ 
    console.log('changed'); 
}); 

Và yếu tố này là tự động chèn vào trang khi tab được nhấp:

<select id="userFilter"> 
    <option value="1">1</option> 
    <option value="2">2</option> 
    <option value="3">3</option> 
</select> 

Vấn đề là khi tôi thay đổi trình đơn thả xuống, không có gì được hiển thị trong bảng điều khiển.

+2

Hoạt động tốt cho tôi: http://jsfiddle.net/KhY8s/. Hãy chắc chắn rằng bạn ràng buộc trình xử lý sự kiện khi 'body' tồn tại (jQuery 101). Từ [jQuery ** tutorial **] (http://docs.jquery.com/Tutorials:Getting_Started_with_jQuery#Hello_jQuery): * "Như hầu hết mọi thứ chúng ta làm khi sử dụng jQuery đọc hoặc thao tác mô hình đối tượng tài liệu (DOM), chúng ta cần đảm bảo rằng chúng tôi bắt đầu thêm sự kiện, v.v. ngay khi DOM sẵn sàng. Để thực hiện điều này, chúng tôi đăng ký sự kiện sẵn sàng cho tài liệu. "*. Tại sao có vẻ như không ai đọc nó? –

+0

Hãy đánh dấu câu trả lời sau đó :) – Archer

+1

Chỉ cần một lưu ý nhanh để giúp những người khác có thể mắc sai lầm ngu ngốc - hãy đảm bảo rằng bạn không có id trùng lặp ngẫu nhiên, ví dụ: nếu bạn có div với id giống với bộ lọc của mình , sự kiện thay đổi sẽ không cháy! – Steve

Trả lời

18

Wrap nó trong $(document).ready(function(){....}) để kiểm soát html userFilter được thêm vào DOM và có sẵn để javascript

$(document).ready({ 
    $('body').on('change', '#userFilter', function(){ 
     console.log('changed'); 
    }); 
}); 

Việc xử lý thông qua để sẵn sàng() được đảm bảo để được thực thi sau khi DOM đã sẵn sàng , vì vậy đây thường là nơi tốt nhất để đính kèm tất cả các trình xử lý sự kiện khác và chạy mã jQuery khác, jQuery docs.

+0

Điều đó đã sửa nó. Cảm ơn! –

+1

Bạn được chào đón – Adil

+0

Tôi có một TextArea bên trong một UpdatePanel và ở trên không làm việc cho tôi vì một số lý do:/Bất kỳ đề nghị? Cảm ơn. – SearchForKnowledge

0

Mặc dù một chút không liên quan đến OQ, nếu bạn đến đây vì lựa chọn của bạn không kích hoạt, hãy đảm bảo rằng trước đó bạn không chọn "Ngăn trang này hiển thị ..." alert(). Bạn sẽ cần phải đóng tab và mở lại URL đó để làm điều đó kích hoạt lại một cách rõ ràng.

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