2010-07-02 31 views
5
$(document).ready(SetupButtonClicks()); 

function SetupButtonClicks() { 
    $('#btnJavaPHP').click(DoPHPStuff()); 
} 

function DoPHPStuff() { 
    //stuff 
} 

Tôi có mã này trong tệp javascript của mình, khi tôi gỡ lỗi, tôi thấy nó gọi số SetupButtonClicks() giống như vậy nhưng sau đó được thực hiện, gọi số DoPHPStuff(). Chỉ nên gọi DoPHPStuff() khi nhấp vào btnJavaPHP. Tôi đang làm gì sai?Tại sao hàm javascript này chạy mà không bị gọi?

Trả lời

17

Thay đổi SetupButtonClicks bạn chức năng:

$('#btnJavaPHP').click(DoHPStuff); 

Cách bạn đã có nó được mã hóa, bạn đang nói Javascript để gọi chức năng, chứ không phải để sử dụng nó như "click" xử lý. Các dấu ngoặc đơn là một toán tử gây ra một hàm được gọi.

+0

Cảm ơn, điều đó đã khắc phục. – jamone

+2

@jamone bạn $ (tài liệu) .ready có lẽ vẫn sai ... hãy đảm bảo thay đổi điều đó. – galambalazs

+0

@galambalazs vâng, tôi đã cố định dòng $ (tài liệu) .ready cùng một lúc. Cảm ơn – jamone

3

Xóa ().

Bằng cách viết $(document).ready(SetupButtonClicks()), bạn đang gọiSetupButtonClicks và chuyển giá trị trả lại của nó đến ready.
Tương tự, bằng cách viết $('#btnJavaPHP').click(DoPHPStuff()), bạn đang gọiDoPHPStuff (ngay lập tức) và chuyển bất kỳ giá trị nào trở về click().

Bạn cần tự chuyển các hàm bằng cách viết $(document).ready(SetupButtonClicks)$('#btnJavaPHP').click(DoPHPStuff).

3
function DoPHPStuff() { 
    //stuff 
} 

function SetupButtonClicks() { 
    $('#btnJavaPHP').click(DoPHPStuff); 
} 

$(document).ready(SetupButtonClicks);  
2

Với ngoại lệ của một khai báo hàm, cặp dấu ngoặc đơn theo định danh của hàm làm cho hàm thực thi. Ví dụ:

// function declaration; function not executed 
function SetupButtonClicks() { 

} 

// function executed 
SetupButtonClicks(); 

// function not executed 
SetupButtonClicks; 
Các vấn đề liên quan