Điều đó tôi biết, không có sự khác biệt. Tôi không chắc tại sao người ta lại thích cái kia hơn hay tại sao cả hai đều được nhắc tới vì điều đó gây nhầm lẫn cho tôi.
Nhìn vào http://code.jquery.com/jquery-1.9.1.js chúng ta thấy:
1915 next = function() {
jQuery.dequeue(elem, type);
};
... trong phương pháp jQuery.dequeue
. Điều này được gọi một chút sau đó (trên dòng 1936) là fn.call(elem, next, hooks)
. Bạn thấy rằng next
là thông số đầu tiên trong gọi lại queue
và fn
là queue
tại thời điểm đó.
Nhìn về phía trước, chúng ta thấy
1983 dequeue: function(type) {
return this.each(function() {
jQuery.dequeue(this, type);
});
},
này được xác định trên jQuery.fn
, vì vậy đó là chức năng gọi bằng $(this).dequeue
. Tuy nhiên, điều này thực hiện chính xác điều tương tự. Sự khác biệt duy nhất là phần tử bị khử. Trong fn.dequeue
nó lặp lại trên bộ sưu tập, nhưng đó sẽ chỉ là một phần tử cho $(this)
.
Nếu chúng ta nhìn lại, chúng ta thấy những gì elem
là mặc dù:
1908 dequeue: function(elem, type) {
... hey, chờ một giây .. nó this
(khi gọi từ $(this).dequeue
)! Vì vậy, bạn có thể thấy rằng họ làm chính xác điều tương tự. Tuy nhiên, $("some other collection").dequeue
sẽ hoạt động khác nhau.
Gọi next()
giúp bạn nhận thêm một cuộc gọi .each
, vì vậy tôi đoán điều đó sẽ nhanh hơn.
Nhân tiện, bạn không phải gọi số next
trong cuộc gọi lại vì bạn có thể đổi tên tham số thành bất kỳ thứ gì bạn muốn.
EDIT: mỗi mini-thảo luận của tôi với đồng nghiệp lừng lẫy của tôi @ FabrícioMatté, có thể thực sự là một sự khác biệt về tính năng giữa next()
và $(this).dequeue()
, đặc biệt là khi không sử dụng các tiêu chuẩn fx
đợi. Khi chức năng next
được tạo, nó được thiết lập để gọi $.dequeue
với loại được mua từ queue
rồi, nhưng $.fn.dequeue
lấy loại làm đối số.Đây có thể là động lực hơn nữa để gắn bó với next()
, mặc dù tôi chưa bao giờ thực sự thấy ai đó sử dụng bất cứ thứ gì khác ngoài hàng đợi hiệu ứng chuẩn thực tế.
Câu hỏi về [thẻ: tối ưu hóa] này như thế nào? – millimoose
Điều gì 'next()' được ghi lại chỉ trong [tài liệu cho '.queue()'] (http://api.jquery.com/queue/#queue2): "Kể từ jQuery 1.4, hàm đó được gọi là được truyền chức năng khác như đối số đầu tiên. Khi được gọi, nó sẽ tự động khử đi mục tiếp theo và giữ cho hàng đợi chuyển động. " – millimoose
Tôi đã thêm Tối ưu hóa vì, nó nêu rõ rằng tối ưu hóa là hành động cải thiện phương pháp hoặc thiết kế. Tôi đang tìm kiếm phương pháp tốt nhất để sử dụng các chức năng này vì vậy tôi đang tìm cách 'tối ưu hóa' mã của tôi ... Làm cho cảm giác 100% với tôi! – Epik