2010-03-05 30 views
7

tôi có thể ràng buộc một sự kiện jquery để yếu tố này như:jQuery xử lý sự kiện không làm việc

<script type="text/javascript"> 
$('#new_key').ready(function() { 
alert('Handler for .submit() called.'); 
return false; 
}); 

Nó hoạt động như mong đợi

nhưng nếu tôi làm:

<script type="text/javascript"> 
$('#new_key').submit(function() { 
    alert('Handler for .submit() called.'); 
    return false; 
}); 

nó không hoạt động. không ai biết tại sao? tôi đang thiếu gì?

Trả lời

7

Bạn cần phải làm:

$(function() { //equal to $(document).ready() { 
    $('#new_key').submit(function() { 
    alert('Handler for .submit() called.'); 
    return false; 
    }); 
}); 

Các hình thức có thể không sẵn sàng để được ràng buộc để khi bạn đang gọi điện thoại, vì vậy bạn cần phải quấn nó để thực hiện và dàn dựng các xử lý khi tài liệu đã sẵn sàng .

+1

+1, nhưng tại sao sử dụng $ (function() {}) thay vì $ (document) .ready()? Việc đầu tiên không đọc tốt, trong khi thứ hai là rõ ràng hơn (IMHO) – Matt

+0

@Matt - Chỉ cần thói quen của tôi cho ngắn gọn kể từ khi tôi gõ nó có lẽ 50 lần một ngày tôi giả sử, tùy theo bạn thích sẽ làm việc tốt mặc dù ... bất cứ điều gì nổi thuyền của bạn. –

+0

@Matt họ thực sự khác nhau, nếu tôi không nhầm, nhưng một chút, và tôi không thể nhớ làm thế nào. Tôi nghĩ, mặc dù, $ (function() {}) là bằng cách nào đó tốt hơn. – Seaux

1

$.ready(), nếu được sử dụng, nên được sử dụng trên tài liệu để cho biết DOM đã được tải đầy đủ.

$(document).ready(function(){ 

    $("#new_key").submit(function(e){ 
    e.preventDefault(); 
    alert("Submit called!"); 
    }); 

});​ 

Demo Online: http://jsbin.com/ojaqo3/edit

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