2012-01-28 37 views
6
$(".container").on("contextmenu", ".photos-bottom .albums li", function(e) { 

$('html').bind('click', function (event) { 
    alert(id); 
}); 

return false; 
}); 

khi tôi nhấp chuột phải (đối với ngữ cảnh) nhiều lần và sau đó nhấp chuột trái html một lần, nó sẽ kích hoạt cảnh báo số lần tôi nhấp chuột phải.jQuery liên kết bắn nhiều lần?

Vì vậy, nếu tôi nhấp chuột phải một lần, sau đó nhấp chuột trái, nó sẽ hiển thị cửa sổ bật lên một lần. Nếu tôi nhấp chuột phải ba lần, sau đó nhấp chuột trái, nó sẽ hiển thị cửa sổ bật lên ba lần.

Tại sao lại như vậy?

+0

bạn đang cố gắng làm gì với mã đó? gắn sự kiện 'click' vào' html'? – gdoron

+0

Tại sao bạn liên kết lại trình xử lý 'click' trong trình xử lý' contextmenu'? Điều này không có ý nghĩa gì nhiều. – Tomalak

+0

Đây là cửa sổ bật lên và khi tôi liên kết, nhấp vào html, vì vậy khi tôi nhấp vào bên ngoài cửa sổ bật lên, nó sẽ kích hoạt sự kiện này để đóng menu và bất kỳ điều gì khác. (Có nhiều mã hơn cho điều này, vì vậy có rất nhiều bạn không nhìn thấy) –

Trả lời

19

$('html').unbind('click').bind('click') sửa nó.

+0

Thay vào đó, hãy di chuyển mã đó ra bên ngoài trình xử lý ngữ cảnh 'on' contextmenu. – ShankarSangoli

+0

Cảm ơn bạn, nhưng để nó hoạt động như nó cần, nó chỉ cần ràng buộc khi menu đã được mở. –

+1

cảm ơn bạn đã giúp tôi (Y) –

4

Vì sự kiện nhấp của bạn đang bị ràng buộc mỗi lần xảy ra sự kiện menu ngữ cảnh, bạn thực sự thêm một liên kết bổ sung mỗi khi bạn nhấp chuột phải. Đây là lý do cho số lượng ngày càng tăng của sự kiện thực thi.

Bạn có nên:

a) unbind sự kiện khi menu ngữ cảnh được đóng lại, hoặc

b) ràng buộc sự kiện nhấp chuột bên ngoài chức năng ContextMenu callback của bạn.

+0

Cảm ơn, vâng, khi có nhiều công việc hơn, hãy sửa nó: $ ('html'). Unbind ('click'). Bind (' bấm ') –

+1

vui vì tôi có thể phục vụ :) – Kristian

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