Tôi có một tập lệnh mà tôi đang phát triển tạo ra hiệu ứng loại nút trượt. Năm div nằm bên cạnh eachother với một liên kết. Khi một trong các DIV được nhấp vào nội dung liên quan được mở rộng và phần còn lại của Div được đóng lại.Ngăn chặn việc thực thi Javascript hai lần
Vấn đề là, nếu người dùng nhấp vào Div hai lần trong khi nó tải hoặc nhấp vào một Div khác liên tiếp nhanh chóng, các vết nứt bắt đầu hiển thị.
Tôi tự hỏi liệu có thể chỉ cho phép truy vấn được thực thi một lần và chờ cho đến khi hoàn thành thay vì xếp hàng nó.
Đây là mã hiện tại của tôi, nếu nó là crap cảm thấy tự do bình luận về làm thế nào tôi có thể tốt hơn nó ... Tôi không phải là người giỏi nhất trong Javascript/jQuery: P
function mnuClick(x){
//Reset all elements
if($('#'+x).width()!=369){
$('.menu .menu_Graphic').fadeOut(300);
$('.menu_left .menu_Graphic').fadeOut(300);
$('.menu_right .menu_Graphic').fadeOut(300);
$('.menu').animate({width: "76px"},500);
$('.menu_left').animate({width: "76px"},500);
$('.menu_right').animate({width: "76px"},500);
}
var ElementId = '#' + x;
$(ElementId).animate({
width: 369 + "px"
},500, function(){
$(ElementId + ' .menu_Graphic').fadeIn(300);
});
}
Cảm ơn trước, Chris.
+1 chỉ là những gì tôi định nói, chỉ cần có một biến theo dõi nếu sự kiện được chạy, khởi tạo nó trước khi bạn bắt đầu xử lý (vì vậy nó vô hiệu hóa tất cả các sự kiện khác). – Jakub
Cảm ơn rất nhiều. Giải pháp tuyệt vời nhưng rất đơn giản :) – Chris