2010-09-18 40 views
7

Tôi đang sử dụng jQuery để viết những điều như thế này:chức năng gọi lại Viết

$('#current_image').fadeOut(function(){ 
     $('#current_image').attr('src',newImage).show(); 
    }); 

Đây là đáng yêu, một khi fadeOut đã hoàn thành, các bit lồng nhau thực hiện.

Tôi muốn tạo chức năng của riêng mình ở đây để thay thế fadeOut. Chức năng của tôi sẽ trông như thế nào để mã này hoạt động?

$('#current_image').customFadeOut(function(){ 
     $('#current_image').attr('src',newImage).show(); 
    }); 

Trả lời

3

Chìa khóa chỉ được đi qua các tài liệu tham khảo chức năng với phương pháp kỵ bạn xác định và ràng buộc rằng hàm được chuyển vào $.animate hoặc bất cứ chức năng jquery hoạt hình bạn sử dụng nội bộ trong đó.

HTML:

<div id="blah" style="color:#fff; opacity:1; background:black; height:50px; position:relative; ">fsdljfdsjfds</div> 
<a id="click" href="#">fjsd</a> 

JS:

$.fn.customFadeOut = function (callback) { 
    return $(this).animate({ 
     opacity: 0.25, 
     fontSize: "3em", 
     height: 'toggle' 
    }, 5000, function() { 
     callback.apply(this) 
    }); 

} 

$('#click').click(function() { 
    $('#blah').customFadeOut(function() { 
     alert('hi') 

    }) 

})​ 

Live Demo

+1

Không thể "function() {callback.apply (this);}" được thay thế bằng "gọi lại"? –

+0

Có, nhưng có thể cần phải có chức năng chung cho tất cả 'customFadeOut' ngoài 'callback' để cách này linh hoạt hơn nhưng rõ ràng hơn. Tôi nghĩ rằng một cuộc biểu tình của nhiều khả năng hơn là tốt hơn so với tính ngắn gọn. Ngoài ra, nếu ai đó gọi 'customFadeOut' mà không có chức năng thì sao? Sau đó, nó sẽ thất bại, và bạn biết làm thế nào có rất nhiều jQuery noobs những người không biết JS và/hoặc không đọc API đúng để biết bạn phải ăn một đối số: p –

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