2010-10-15 20 views
12

Tôi mới làm quen với khung nguyên mẫu và đang cố gắng thực sự đơn giản và thất bại. Tôi đang cố phản hồi sự kiện nhấp chuột trên một nút như vậy:Nguyên mẫu - sự kiện nhấp chuột theo tên lớp phần tử

$$('.btn').observe('click', respond); 
function respond(event) { 
    alert("hello"); 
} 

Tại sao điều này không hoạt động ?? Hãy giúp tôi!

Trả lời

21

Không giống như jQuery, bàn giao bộ chọn có nhiều kết quả trong Prototype hoạt động hơi khác một chút. Bạn cần xử lý từng kết quả được chọn riêng biệt bằng cách sử dụng .each().

$$('.btn').each(function(element) { 
    element.observe('click', respond); 
}) 

Đây là một trong những lý do tôi chuyển sang jQuery. Lý do khác: biết jQuery là thị trường và biết Prototype thì không.

+1

Thats chỉ là ngu ngốc. Cảm ơn. Tôi đến từ một nền jquery và đang bị buộc phải sử dụng nguyên mẫu cho một dự án upcomming - từ những gì tôi đã nhìn thấy nó là cách rất xa so jquery liên quan đến thao tác DOM – David

+0

Ngoài ra - điều này không được đề cập trong các tài liệu từ những gì tôi có thể nhìn thấy! – David

+0

tôi sẽ không nói đó là dặm phía sau. Nó có thể làm tất cả những điều tương tự, nhưng không phải trong một cách ngắn gọn như jQuery. Tôi đã làm việc với nó trước khi jQuery xuất hiện trên thị trường. Trở lại sau đó nó đã được cho đến nay là sự lựa chọn tốt nhất. Nhưng, vâng, làm những việc với jQuery thì dễ hơn nhiều. –

12

Có thể cũng có thể được thực hiện với một single-liner, như ai đó đã đề nghị trong một chú thích:

$$('.btn').invoke('observe', 'click', respond); 
Các vấn đề liên quan