2011-09-23 19 views
13

Trong nhiều trường hợp, tôi cần phải ràng buộc một hành vi cho một phần tử sau khi tải, và sau đó sau khi một sự kiện kích hoạt (như "thay đổi"). Tôi nghĩ rằng cách tốt nhất là để làm cho nó trong cùng một dòng:Jquery: liên kết tải + thay đổi đồng thời

$('#element_id').bind('load, change', function() { 
... 
}); 

Nhưng công trình này chỉ dành cho "thay đổi" chứ không phải "tải". Có một cách tốt hơn?

+0

Tôi đã xóa dấu phẩy nhưng vẫn chưa hoạt động. Tôi nghĩ rằng sẽ có một số hạn chế với tải – max

Trả lời

36

tôi stumbled trên cùng một vấn đề. Loại bỏ dấu phẩy là không đủ, ít nhất là trong trường hợp này:

$(document).ready(function(){ 
    $('#element_id').bind('load change', function() { 
     ... // (this DOESN'T get called on page load) 
    }); 
}); 

Tôi đoán load sự kiện được kích hoạt trước $(document).ready().

Đây là một giải pháp đơn giản:

$(document).ready(function(){ 
    $('#element_id').bind('change', function() { 
     ... 
    }); 
    $('#element_id').trigger('change'); 
}); 
+0

Ngay cả điều này sẽ lặp lại sự kiện thay đổi một tỷ lần. Không biết tại sao. Tôi đã thử phương pháp này và những phương pháp khác và nó chỉ muốn lặp lại. –

+0

Bạn có kích hoạt sự kiện bên trong chức năng không? Nó không nên lặp lại, phải có một lỗi ở đâu đó. Bạn có thể thử tạo một trường hợp lỗi tối thiểu và đăng mã trong một câu hỏi riêng; rất có thể bạn sẽ tìm ra trước khi nhấn nút "Đăng". :) – johndodo

+0

Không kích hoạt nó bên trong hàm. $ ('# employeeDropDown'). on ('change', function (event) { var form = $ (event.target) .parents ("form"); form.submit(); }). 'thay đổi'); hoặc ngay cả khi bạn đặt nó ở trên, sẽ khiến nó lặp lại. –

1

Bạn không chỉ cần xóa dấu phẩy?

+0

Để thêm vào: http://api.jquery.com/bind/ –

4

Đối với nội dung đã được nạp, khi bạn muốn chạy một hàm trên một sự kiện và cũng ngay lập tức, bạn có thể sử dụng một sự kiện tùy chỉnh của đặt tên riêng của bạn để tránh kích hoạt mọi ràng buộc hiện có từ thư viện, v.v. trên các sự kiện được tạo sẵn, ví dụ

$(".my-selector").on("change rightnow", function() { 
    // do stuff... 
}).triggerHandler("rightnow"); 
Các vấn đề liên quan