Tôi có đoạn mã sau:jQuery .animate() bộ hiển thị: không, cách tránh?
HTML:
<div id="clickme">
Click me :-)
</div>
<div id="info" style="background:red; width:100%; height:100px; margin-bottom:-100px; z-index:20; position:absolute; bottom:0px;">
Stay, damn!
</div>
JavaScript:
$('#clickme').click(function() {
$('#info').animate({
marginBottom: 'toggle'
},{
duration:500
});
});
Nó cũng có sẵn tại http://jsfiddle.net/DxnQJ/
Rõ ràng, tôi muốn #info DIV
xuất hiện/biến mất bất cứ khi nào các #clickme DIV
được nhấp. Nó hoạt động như dự định, ngoại trừ việc #info DIV
biến mất sau khi hoạt ảnh do jQuery đặt thuộc tính CSS display
thành none
.
Làm cách nào để tôi có thể yêu cầu jQuery ngừng ẩn số DIV
của mình?
Kiểm tra nguồn jQuery, có vẻ như 'toggle' được thiết kế cho các hiệu ứng hoàn toàn được hiển thị hoặc ẩn (như chiều cao, chiều rộng và độ mờ). Điều gì xảy ra là nhấp vào 'Nhấp vào tôi :-)' và hoạt ảnh không được ẩn lần đầu tiên có tác dụng tương tự như khi bạn có 'marginBottom: 'hide''. Vì vậy, khi nó được thực hiện hoạt hình, 'jQuery (elem) .hide();' được gọi trên phần tử của bạn. – zkhr