2011-09-05 35 views
9

Tôi cần rằng mọi đầu vào văn bản trong một lớp nhất định là một datepicker. Một cái gì đó như:JQuery: delegate và datepicker

$("input[type=text].time").datepicker(); 

nhưng tôi đang thêm nhiều mã thông qua Jquery.load() vì vậy tôi tin rằng tôi cần một đại biểu. Vấn đề là tôi không biết làm thế nào để làm điều đó, bởi vì theo như tôi biết, tải sự kiện không thể được sử dụng trong một đại biểu. Nó sẽ dễ dàng nếu nó tồn tại:

$(document).delegate("input[type=text].time", "load", function(){ 
    $(this).datepicker(); 
}); 
+1

Tôi không thấy sự cần thiết của một đại biểu .... mà chỉ bối rối cho người đọc. –

+0

Nếu bạn tải thông qua AJAX một trang có chứa một đầu vào mới của lớp đó ("thời gian"), mà không cần sử dụng một đại biểu nó không tự động kích hoạt datapicker. Tôi tải rất nhiều dữ liệu vía jquery.load() và nó không chỉ là lớp datapicker, có nhiều thứ như thế này cần phải được đặt bằng tay trên mỗi tải trang. – Ivan

+2

Nếu bạn đang tải nội dung, hãy thêm datepicker vào 'success'. Tôi đã không tìm thấy một lựa chọn tốt cho cách bạn đang muốn sử dụng '.load()'. –

Trả lời

16
$("body").delegate("input[type=text].time", "focusin", function(){ 
    $(this).datepicker(); 
}); 

Tôi đã từng đại biểu trên cơ thể bởi vì tôi không biết nếu bạn có mã của bạn trong các thùng chứa khác mà bạn có thể nhắm mục tiêu.

Đây là một fiddle rằng đặt mục tiêu cụ thể div với đại biểu:

http://jsfiddle.net/MpqAy/

+0

Vì vậy, trên mỗi nhấp chuột, hãy thử thêm bộ chọn ngày vào bất kỳ kết quả hợp lệ nào? –

+0

Nó không phải là những gì tôi đã tìm kiếm chính xác, nhưng nó hoạt động .. Tôi không biết những gì sẽ xảy ra khi bạn reinitialize rất nhiều lần datepicker – Ivan

+0

@ jk đó là tuyệt vời. Cảm ơn bạn đã đăng bài này. Nó chỉ là những gì tôi đang tìm kiếm và hoạt động hoàn hảo - lần đầu tiên. –