2011-07-12 43 views
8

Xin chào, tôi có một div của một biểu mẫu. tôi muốn rằng sự kiện nhấp chuột vô hiệu hóa khi chuột ra khỏi div. Vì vậy, tôi đã thử điều này nhưng nó không hoạt động ot của div vẫn có thể nhấp. Bất kỳ ý tưởng??Vô hiệu hóa nhấp chuột khi ra khỏi div

var flag = false; 
$("#foo").live("mouseenter",function(){ 
    flag = true; 
}).live("mouseleave",function(){ 
    flag = false; 
}) 

$(document).click(function(){ 
    if(!flag) 
     return false; 
}); 
+0

Tại sao bạn cần tắt nhấp chuột bên ngoài biểu mẫu? Bạn muốn đạt được những gì? –

+0

Bạn có ý gì khi vô hiệu hóa nhấp vào bên ngoài div? – ShankarSangoli

+0

tôi hiển thị div khi nhấp vào liên kết và khi div này được hiển thị, tôi không muốn phần còn lại của tài liệu có thể nhấp ngoại trừ div .. –

Trả lời

6

Bạn không thể ngăn sự kiện nhấp được kích hoạt từ toàn bộ tài liệu. Bạn có thể làm điều đó trên cơ sở phần tử. Bạn có thể chặn toàn bộ màn hình bằng cách sử dụng vị trí tuyệt đối trong suốt (độ mờ đục thấp) và ẩn nó một lần nữa khi div hiển thị.

var $body = $(document.body); 
var $div = $("<div id='dummyDiv'/>").hide().appendTo($body); 
$div.css({position:"absolute", height: $body.height(), width: $body.width(), background: "#000", opacity: 0.5}).show(100); 

//to hide it 
$("#dummyDiv").hide(100); 
+0

Bạn có thể ngăn sự kiện nhấp được kích hoạt từ toàn bộ tài liệu: http://stackoverflow.com/a/8596014/931358 – Jurik

+0

+1 để đơn giản. Thêm lớp phủ làm cho vấn đề xử lý sự kiện nhấp chuột không liên quan. –

0

istead của việc sử dụng trở lại sai, sử dụng e.preventDefault http://css-tricks.com/6809-return-false-and-prevent-default/

+0

chúng cũng làm như vậy – locrizak

+3

@locrizak - chúng làm * không * làm điều tương tự, không hề. Một ngăn chặn hành động mặc định, một ngăn chặn sự kiện chết trong các bài hát của nó, dừng tuyên truyền là tốt. Nói rằng chúng giống nhau hoàn toàn không chính xác. –

+0

tôi cũng đã thử nhưng không làm việc quá. –

1
$("#foo").live("mouseenter",function(){ 
    $(document).bind('click', onDocumentClick); 
}).live("mouseleave",function(){ 
    $(document.unbind('click'); 
}); 

function onDocumentClick(e){ 

}; 

Tôi nghĩ rằng bạn muốn nhấp chuột vào #foo thay vì document, nếu vậy bạn chỉ có thể làm điều này:

$('#foo').click(function(){ 

});

Vì bạn phải được cuộn qua một phần tử để bấm vào nó, nó sẽ hoạt động tốt.

+0

tôi đã viết trở lại sai và e.preventDefault() trong onDocumentClick func nhưng cả hai didnt làm việc .. –

+0

chính xác những gì bạn đang cố gắng để làm gì? – locrizak

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