Với sự kiện đoàn trong jQuery 1.6, bạn có thể đáp ứng với các sự kiện có bọt lên đến một phụ huynh phổ biến.jquery sự kiện ủy nhiệm biến phạm vi với các cuộc gọi liên tiếp
Một thực hiện mẫu là như thế này:
(function($){
$.fn.myeventhandler = function() {
return this.delegate('a.next, a.prev', 'click customEvent', function (event) {
var target=$(event.target);
var bar = null;
if('click' == event.type) { /*~[ call this 'a' ]~*/
// handle the click event
$('#next-element').animate({width:'200px'},1300,function(){
bar = 'value1';
$('#next-element').animate({width:'100px'},1300,function(){
bar = 'value2';
console.log(bar);
});
});
} else if('customEvent' == event.type) { /*~[ call this 'b' ]~*/
// handle the customEvent event
$('#my-element').animate({height:'200px'},1300,function(){
bar = 'my-event1';
console.log(bar);
});
}
return false;
});
}
})(jQuery);
Đây là loại cấu trúc có thể làm việc rất tốt khi bạn có nhiều sự kiện gây nên bạn muốn có ràng buộc trên một trang. Tuy nhiên, tôi đã nhận thấy một hành vi tò mò và tự hỏi liệu có ai đó có thể khai sáng cho tôi về phạm vi sau:
Nếu bạn xác định biến 'var bar;
' trước 'a' và sử dụng nó trong 'a' và 'a' mất nhiều thời gian để thực thi, sau đó nếu 'lần nhấp' được kích hoạt lần thứ hai, biến 'thanh' có được gán lại giá trị hoặc biến mới sẽ được tạo không?
Lý do cho câu hỏi là tôi đã có hoạt ảnh 'chưa hoàn thành' trong đó hoạt ảnh mất 1,3 giây để hoàn thành. Nếu tôi kích hoạt hai sự kiện nhấp liên tiếp, mục tiêu và loại được đặt chính xác, nhưng hoạt ảnh thứ hai dường như ảnh hưởng đến hình ảnh đầu tiên và hai phạm vi xuất hiện để có sẵn cho nhau.
Tôi chưa hoàn thành hoạt ảnh, vì vậy tôi chưa có bộ làm việc để đặt trực tuyến trong jsFiddle, nhưng có bất kỳ quy tắc nào cho phạm vi ở đây mà tôi nên nghiên cứu hoặc giải thích rõ hơn về phạm vi có sẵn ai đó có thể đã tìm thấy?
EDIT: Ở trên, tôi đã thêm vào trong một tình huống tương tự như những gì tôi đang sử dụng. Trong trường hợp đơn giản ở trên, giá trị của 'bar' vẫn giữ giá trị kỳ vọng trên 2 cuộc gọi liên tiếp, nhưng trong trường hợp phức tạp hơn tôi đang làm việc (vẫn), trừ khi tôi chuyển các tham số vào hàm gọi lại cụ thể, vẫn còn điều kiện cho phép 2 cuộc gọi liên tiếp thay đổi giá trị của thông số sao cho cuộc gọi lại thấy giá trị được tạo bởi cuộc gọi tiếp theo - không phải giá trị được đặt hợp lý trong cuộc gọi được kích hoạt của riêng nó. Nếu bất cứ ai có thể tái tạo hiệu ứng này trên một ví dụ đơn giản, tôi sẽ đánh giá cao nó. Tôi đang giảm bớt các chức năng của mình để cố gắng tạo ra một jsFiddle sao chép nó.
Cảm ơn, AE
'a' là gì? ? ? –
Xin chào, Interstellar_Coder, 'a' trong các chú thích đề cập đến khối if() đầu tiên và 'b' đề cập đến khối 'khác' - xin lỗi nếu nhận xét không hữu ích - ví dụ tốt để minh họa cho nó tốt hơn ? – MyStream