2010-11-18 42 views
7

Tôi có mã sau đây chuyển đổi chế độ hiển thị của div khi div khác được kết nối. Nó hoạt động tốt, trừ khi bạn rê chuột qua và ra lặp đi lặp lại nó trì hoãn tất cả các Toggles:Chuyển đổi jQuery khi di chuột qua - ngăn hàng đợi

$(document).ready(function() { 
    $('.trigger').mouseover(function(){ 
     $('.info').toggle(400); 
    }).mouseout(function(){ 
     $('.info').toggle(400); 
    }); 
}); 

tôi đã cố gắng này, nhưng nó dường như không làm việc (nó tạo ra vấn đề với khả năng hiển thị của toggled div và kết thúc không hiển thị gì cả)

$(document).ready(function() { 
    $('.trigger').mouseover(function(){ 
     $('.info').stop().toggle(400); 
    }).mouseout(function(){ 
     $('.info').stop().toggle(400); 
    }); 
}); 

Làm cách nào để thoát khỏi hàng đợi ở đây?

+0

Bạn thực sự cần bộ nhớ cache 'selector .info'. – Stephen

+0

Nếu bạn đang đi vào bộ nhớ đệm chọn Stephen, bạn cũng có thể cache toàn bộ dòng .... tiếc là điều này không giúp Dan với câu hỏi của mình anyway. Một số người đơn giản hóa mã của họ để người khác trả lời vấn đề đang được đề cập đến. Tôi cũng đồng ý với John- Dan nên chấp nhận trở thành người tham gia không phải là người dùng – Blowsie

+0

Bạn chỉ chấp nhận 1 trong 7 câu hỏi, nhấp vào câu hỏi của tôi, sau đó chấp nhận câu trả lời bạn đã chọn cho mỗi câu hỏi – Blowsie

Trả lời

13

Sử dụng chức năng .dequeue() và .stop()

.dequeue().stop() 

Tuyệt vời bài viết về vấn đề này tìm thấy ở đây, im chắc chắn nó sẽ cho bạn biết những gì bạn muốn biết.

http://css-tricks.com/examples/jQueryStop/

Ngoài ra tôi sẽ sử dụng. show() and .hide() thay vì .toggle() chỉ để lưu jquery bất kỳ sự nhầm lẫn.

Edit: Cập nhật

Vấn đề là các hình ảnh động isnt hoàn thiện, sử dụng đúng, đúng nó nhảy đến cùng trước khi bắt đầu.

Example

$('.trigger').mouseover(function() { 
    $('.info').stop(true, true).show(400); 
}).mouseout(function() { 
    $('.info').stop(true, true).hide(400); 
}); 
+0

Cảm ơn. Mã bây giờ là như thế này: $(document).ready(function() { \t $('.trigger').mouseover(function(){ \t \t $('.info').dequeue().stop().show(400); \t }).mouseout(function(){ \t \t $('.info').dequeue().stop().hide(400); \t }); }); Nhưng một lần nữa, điều này chỉ hoạt động giống như trong đoạn mã thứ hai của tôi trong bài đăng gốc. – Dan

+0

cập nhật này bất kỳ tốt cho bạn, Dan? – Blowsie

+0

cảm ơn Blowsie nó là hữu ích cho tôi – srini

0

Bạn nên cố gắng này

$(".trigger").hover(function() { $(".info").stop(true).toggle(400); }); 
Các vấn đề liên quan