2012-06-02 20 views
12

Tôi có trang trình bao Jquery Mobile, tôi đang tải biểu mẫu vào sử dụng Ajax. Biểu mẫu có một số hộp kiểm, mà tôi cần phải liên kết với.Làm thế nào để sử dụng Jquery document.on() trên các phần tử được đưa vào thông qua Ajax?

Nhưng kỳ lạ, tôi có thể lấy nó để làm việc thiết lập người nghe trực tiếp vào nút như vậy:

$('input[name="ohneiln"]').on('change', function() { 
    alert("hello"); 
    }); 

Nhưng khi tôi đang cố gắng để thiết lập các listener để $(document) và uỷ thác cho checkbox, người nghe không bao giờ cháy:

$(document).on('change', 'input[name="ohneiln"]', function() { 
    alert("hello"); 
}); 

Câu hỏi:
là gì cách chính xác để đặt một sự kiện bắt buộc đối với các yếu tố "động" là lo aded qua thông qua Ajax sử dụng $(document).on()? Đây có phải là không thể cho change sự kiện hoặc tại sao tôi gặp rắc rối?

Cảm ơn bạn đã trợ giúp!

+1

Cú pháp thứ hai của bạn có vẻ tốt và nên hoạt động cho các yếu tố động, vấn đề ở đâu đó có thể. –

+1

hoạt động tốt http://jsfiddle.net/7rDDA/ – Esailija

+0

@Esailija - nhưng đầu vào của bạn ở đó khi tải trang. Của tôi không phải là, nó đang được kéo vào thông qua Ajax sau khi người dùng làm một số công cụ – frequent

Trả lời

11

Cách thức phương pháp .on() thay đổi theo cách bạn sử dụng. Trong ví dụ đầu tiên của bạn, phương thức .on() hoạt động tương tự như bind và sẽ chỉ hoạt động trên các phần tử đã tồn tại.

Ví dụ thứ hai hoạt động như .live() hoặc delegate() bằng nhiều cách. Và sẽ làm việc cho các yếu tố được thêm vào sau.

Đọc tài liệu để biết giải thích chi tiết http://api.jquery.com/on/

+0

Cảm ơn bạn đã liên kết và giải thích. Đoán tôi đang gắn bó với phiên bản đầu tiên sau đó. – frequent

+0

Tôi nghĩ rằng bạn có ví dụ đầu tiên và thứ hai trộn lẫn. Thứ nhất là "trực tiếp", thứ hai là "ủy nhiệm". –

+0

Tôi nghĩ rằng tên lửa cảm ơn của bạn :) – codaniel

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