2011-11-21 28 views
19

Tôi có sniplet mã này trong jQueryích setTimeout cuộc gọi (thiếu dấu ngoặc kép quanh tranh cãi?)

$element.parent().children().last().hide().show('slide', {direction : 'left'}, 700, function() { 
    $element.delay(2000, function() { 
     $element.parent().children().last().hide('slide', {direction: 'left'}, 700);    
     reload_table(question_number); 
     //delay ends here 
    }); 
}); 

delay được khai báo là:

jQuery.fn.delay = function(time,func){ 
    return this.each(function(){ 
     setTimeout(func,time); 
    }); 
}; 

Bây giờ tôi nhận được lỗi:

useless setTimeout call (missing quotes around argument?)

FF3.x, Firefox 6+ là ok. Bất kỳ ý tưởng về điều đó? Tại sao điều này có thể xảy ra?

Trả lời

7

Đã tồn tại phương thức jQuery delay và nó dự kiến ​​một chuỗi (queueName) và không phải là hàm làm thông số. Chọn một tên khác cho phương thức trì hoãn của bạn để tránh xung đột.

+0

xin lỗi để nói điều đó nhưng điều đó không khắc phục được nó – kosta5

+16

Tại sao đây là câu trả lời được chấp nhận, nếu điều này không khắc phục được? –

+2

đó là một bí ẩn ... – Tebe

-2

Vấn đề là trong Firefox 3. Nó không phải là xử lý một số yếu tố đúng => phần tử là hoàn toàn bỏ qua trong cây và bỏ qua -> vì thế vấn đề ban đầu của tôi

+5

Câu trả lời rất không hữu ích và không mang tính mô tả. – Cyprus106

7

Chỉ cần để tham khảo nếu ai đó tình cờ gặp câu hỏi này và là tìm kiếm một câu trả lời có thể. Tôi nhận được thông báo lỗi chính xác giống như áp phích ban đầu vì tôi đã trộn thứ tự đối số setTimeout.

này:

setTimeout(25, function(){ 
    spotlight.intro.find('#intro').ellipsis(); 
}); 

... đã cho tôi được thông báo lỗi. Tôi đã thay đổi chức năng này:

setTimeout(function(){ 
    spotlight.intro.find('#intro').ellipsis(); 
}, 25); 

Và vấn đề của tôi đã được giải quyết.

17

tôi đã cùng một lỗi khi tôi đã viết

setTimeout(updateStatus(), 5000); 

thay vì

setTimeout(updateStatus, 5000); 
+0

OP đã gọi phương thức chính xác! đây không phải là vấn đề. Anh ta đã chuyển một con trỏ tới một hàm, trong đối số đầu tiên. – gcb

10

Tôi đồng ý với wsbaser. Tôi đã có thêm trường hợp cần thiết để chuyển thông tin cho hàm và để đơn giản được sử dụng:

setTimeout(function(){ updateStatus(myData) } , 5000); 

Đối số cần phải là hàm và không phải hàm. Firefox đã gặp phải lỗi này, Chrome cho phép nó đi.

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