2012-03-05 14 views
7

giả sử tôi có một liên kết:e.preventDefault - có cách nào để thực hiệnDefault không?

<a href='http://example.com/file.zip' id='dl'>Download</a> 

Và trong khi một người nào đó click vào nó, tôi muốn làm một cái gì đó, chẳng hạn như:

$("#dl").live("click", function(e){ 
    e.preventDefault(); 
    $("#dlbox").fadeOut(500); 
}); 

Có cách nào sau khi tôi e.preventDefault, để đi trước và doDefault? một cái gì đó như

$("#dl").live("click", function(e){ 
    e.preventDefault(); 
    $("#dlbox").fadeOut(500); 
    e.doDefault(); 
}); 

để nó sẽ chạy sự kiện bình thường?

+1

Tôi đã hỏi ngày hôm qua, có thể bạn muốn kiểm tra http://stackoverflow.com/questions/9556107/can-e-preventdefault-be-reversed –

Trả lời

8

Bạn chỉ có thể ngăn chặn hành vi mặc định (với e.preventDefault()).

Bây giờ nếu bạn mong đợi vào liên kết để được điều hướng khi các phương pháp .fadeOut() đã hoàn tất, bạn nên ngăn chặn các hành vi mặc định và sử dụng tham số callback của phương pháp fadeOut để điều hướng khi hoạt hình đã hoàn tất:

$("#dl").live("click", function(e){ 
    e.preventDefault(); 
    var href = this.href; 
    $("#dlbox").fadeOut(500, function() { 
     window.location = href; 
    }); 
}); 

DEMO

+1

fadeOut không đồng bộ, bạn phải đặt mã vào phương thức gọi lại của fadeout cho nó hoạt động như thế – NibblyPig

+0

@SLC. Thật vậy, bạn nói đúng. –

+0

bạn đang giả định liên kết, nếu đó là một biểu mẫu gửi? –

2

Không có lệnh doDefault(), bạn cần phải kiến ​​trúc lại mã của mình.

Tôi sẽ ngăn chặn mặc định, sau đó thực hiện url trực tiếp thông qua window.location. Có thể sử dụng một thẻ khác nhau cho một thẻ neo quá - bằng cách ghi đè chức năng của nó nó không có ý nghĩa để sử dụng nó ở nơi đầu tiên.

ví dụ như một cái gì đó như thế này:

$("#dl").live("click", function(e){ 
    e.preventDefault(); 
    $("#dlbox").fadeOut(500, function() { window.location='www.fish.com'; }); 
}); 
0

lẽ this post có thể giúp bạn? Bạn cũng có thể chỉ trả về false để ngăn liên kết đến vị trí trong href.

Các vấn đề liên quan