2011-09-08 21 views
5

Tôi nhận được thông báo "hi" hơn và hơn nữa, làm thế nào để có được nó để làm điều đó một lần và dừng lại:Làm thế nào để có được một hàm javascript để thực hiện duy nhất một lần vào dom sẵn sàng

function doSomething() { 
    alert('hi'); 
} 

$(function() { 
    doSomething(); 
}); 
+2

Bạn có thể hiển thị cho chúng tôi HTML nơi bạn đang bao gồm tệp JavaScript bạn đã đăng không? –

+2

Tôi không thấy hành vi tương tự. Đây là một fiddle mẫu. http://jsfiddle.net/BjbEM/ – JaredPar

+0

tôi đoán OP muốn các chức năng để chạy một lần khi trang được trả lại lần đầu tiên và sau đó trên trang làm mới OP không muốn chức năng để chạy? – Rafay

Trả lời

1

Hãy thử với :

window.onload = function() { 
    doSomething(); 
} 
+0

Anh ấy đang sử dụng jQuery, tốt hơn nên gọi nó là '$ (document) .ready()' –

0

Raul là đúng, nó sẽ giúp đỡ để có mã ...

Nhưng dựa trên kinh nghiệm của tôi với điều này, những gì bạn muốn là một cái gì đó hơn dọc theo dòng:

var doSomething = function() { 
    alert('hi'); 
} 

$(document).ready(function() { 
    doSomething(); 
}); 
0

Bạn đang tìm kiếm để làm một cái gì đó như thế này ?:

$(document).ready(function() { 
    doSomething(); 
}); 
0

Bạn có thể muốn dính vào phong cách tiết hơn:

function doSomething() { 
    alert('hi'); 
} 

$(document).ready(function() { 
    doSomething(); 
}); 
+0

Trong khi tôi đồng ý với quyết định kiểu này, nó không liên quan gì đến câu hỏi của anh ấy – Matt

+0

@Matt: đáng để trả lời thay vì nhận xét. Tôi chỉ muốn hiển thị phong cách thay thế được định dạng đúng - tự hỏi nếu biểu mẫu terse hơn đang ẩn một số lỗi (không được hiển thị trong bài đăng gốc). –

3

Tôi nghĩ rằng bạn bao gồm tập tin JS của bạn nhiều lần từ HTML. Dọn dẹp HTML của bạn.


Sử dụng:

$(function(){ 
}); 

là hoàn toàn bình thường. Sử dụng hình thức chi tiết hơn không có lợi ích. Nếu bạn đang viết một plugin, bạn có thể muốn làm điều này:

function($){ 
    // $ always refers to jQuery here 
    ...   

}(jQuery); 
// $ might not be defined here in compatibility mode. 
+0

Đề xuất tuyệt vời, để kiểm tra xem JS có được bao gồm nhiều lần không. Ưu điểm của dạng '$ (document) .ready' tiết hơn là nó làm cho nó rõ ràng những gì bạn đang làm, đặc biệt là cho các lập trình viên không biết jQuery. –

6
 // Fired once when document is ready 
     $(document).one('ready', function() { 
       doSomething(); 
     }); 

Sử dụng .Một đảm bảo này được thực hiện một lần duy nhất và không repeatedly.It không quan trọng để đưa nhiều người nghe sự kiện document.ready (nếu bạn cần các sự kiện khác để thực hiện nhiều lần) miễn là bạn không lạm dụng nó, vì lợi ích của khả năng đọc.

.one đặc biệt hữu ích khi bạn muốn cảnh báo xuất hiện lần đầu tiên trang web được mở hoặc khi ứng dụng dành cho thiết bị di động được cài đặt lần đầu tiên.

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