Tôi muốn đóng một hộp bật lên nhỏ trong trang khi người dùng đã nhấp vào bất kỳ đâu trên trang ngoài vùng hộp. làm thế nào để tìm thấy nó?chuột bấm vào một nơi nào đó khác trên trang (không phải trên một div cụ thể)
12
A
Trả lời
17
$(document.body).click(function(e){
var $box = $('#little-pop-up-box-id');
if(e.target.id !== 'little-pop-up-box-id' && !$.contains($box[0], e.target))
$box.remove();
});
e.target
là DOM node
quan tiếp nhận click event
. Tôi đang kiểm tra trước tiên nếu ID
của phần tử đó là không phải là mà chúng tôi đang tìm kiếm.
Séc thứ hai !$.contains($box[0], e.target)
đảm bảo rằng DOM node of invocation
không phải là trong phần phần tử chúng tôi muốn ẩn.
Vâng, tôi đoán đó là thời gian của plugin! :
(function($){
$.fn.outside = function(ename, cb){
return this.each(function(){
var $this = $(this),
self = this;
$(document.body).bind(ename, function tempo(e){
if(e.target !== self && !$.contains(self, e.target)){
cb.apply(self, [e]);
if(!self.parentNode) $(document.body).unbind(ename, tempo);
}
});
});
};
}(jQuery));
tóm tắt
$('#container').outside('click', function(e){
$(this).remove();
});
Ví dụ:
0
Grab toàn cầu sự kiện nhấp chuột, hoặc thiết lập div minh bạch 100%/100% theo các cửa sổ pop-up hộp với sự kiện như vậy.
4
giải pháp @ jAndy là tốt, nhưng tôi cũng muốn đề cập đến Ben Alman's "Outside Events" plugin. Dưới đây là một ví dụ nhanh sử dụng nó:
$("#popup").bind("clickoutside", function(event){
$(this).hide();
});
0
$("html").click(function(){
//close popup
});
Các vấn đề liên quan
- 1. Làm thế nào để vô hiệu hóa chuột phải bấm vào một trang web?
- 2. Tải nội dung của một div trên một trang khác
- 3. Làm thế nào để bấm vào một nút trên một trang web ASP.NET lập trình?
- 4. Nhận liên kết để đi đến một phần cụ thể trên một trang khác
- 5. chơi iframe video trên bấm vào một liên kết javascript
- 6. Tải một div vào một webview trên Android
- 7. cách bấm chuột phải vào mục từ Hộp danh sách và mở menu trên WPF
- 8. Có thể in một chân trang khác nhau trên mỗi trang không?
- 9. vô hiệu hóa/bật nhấp chuột phải vào một phần cụ thể của nội dung html
- 10. PhantomJS nhấp vào liên kết trên một trang
- 11. Chọn một div trên chuột bằng cách sử dụng CSS
- 12. Chú giải công cụ phụ thuộc vào chuột trên một hàng trong dữ liệu (KHÔNG datagridview)
- 13. Mở tệp Excel trên một trang tính cụ thể
- 14. Hành vi tương tự truy vấn phương tiện trên chiều rộng của một div cụ thể
- 15. Hai số div nằm ngay trên một số khác
- 16. Làm cách nào để kích hoạt sự kiện nhấp chuột trên DIV gốc chứ không phải trẻ em?
- 17. FBConnect: Tại sao nó hiển thị trên một số trang chứ không phải trang khác?
- 18. htaccess ghi đè tất cả các trang vào cùng một trang trên một tên miền khác
- 19. Ghi đè css cho một div cụ thể?
- 20. Làm mới trang asp.net trên nút bấm
- 21. Liên kết nhập khóa vào nút cụ thể trên trang
- 22. AngularJS - trên nút bấm các mẫu div tổ
- 23. Highlight div hộp trên di chuột
- 24. JQuery hiển thị và ẩn div trên click chuột (animate)
- 25. Thêm div động trên nhấp chuột
- 26. Kéo và chèn div vào một div
- 27. Silverlight Datagrid chọn trên nhấp chuột phải
- 28. WPF: Trên Chuột di chuột lên một điều khiển cụ thể, tăng kích thước của nó và chồng lên nhau trên các nút điều khiển khác
- 29. làm thế nào để ẩn div với jquery khi nhấp vào bất cứ nơi nào ngoại trừ một div?
- 30. Tải CSS bên ngoài cho một DIV cụ thể
Đây là một giải pháp tốt - chỉ hai ý kiến nhanh chóng mặc dù. Nó có lẽ sẽ có ý nghĩa để cache hộp $ var bên ngoài trình xử lý nhấp chuột để tránh truy vấn lại (mặc dù một truy vấn giá rẻ). Và nếu bạn đang sử dụng phiên bản 1.3.2+ của jQuery,! $ (E.target) .closest ('# little-pop-up-box-id'). Length sẽ làm cho điều kiện ngắn gọn hơn./nitpicking – jmar777
ACHHHH !! TEH CHAIN - IT'S BROKEN! (bằng không ... vị ngọt, +1). Ngoài ra ... chữ 'click' có được thay thế bằng chữ cái var không? – jmar777
@ jmar777: đúng, cố định: p. Tôi cũng đã thêm một '.unbind()' .. Vâng, tôi đoán điều này có thể được tối ưu hóa ở một số nơi. Thậm chí có thể sử dụng '.delegate()'. Ai f ** k cần Ben Alman? :) j/k – jAndy