2011-07-12 59 views
8

嗨,我有一個窗體的div。當鼠標不在div中時,我想要禁用點擊事件。所以我試了這個,但它不工作的div仍然可以點擊。任何想法??使用返回false的禁用鼠標點擊當出格

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

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

爲什麼你需要禁用點擊表單外?你想實現什麼? –

+0

你是什麼意思,禁用點擊外部的div? – ShankarSangoli

+0

我顯示一個div,當點擊一個鏈接,當這個div顯示,我不想休息的文件可以點擊除了div .. –

回答

6

您無法防止整個文檔觸發點擊事件。你可以根據每個元素來完成。您可以使用絕對定位的透明(低不透明度)div來屏蔽整個屏幕,並在div可見時再將其隱藏起來。

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

您可以防止從整個文檔觸發點擊事件:簡單起見,請參閱http://stackoverflow.com/a/8596014/931358 – Jurik

+0

+1。添加疊加使得單擊事件處理的問題無關緊要。 –

0
+0

他們做同樣的事情 – locrizak

+3

@locrizak - 他們做*不*做同樣的事情,根本不是。一個阻止默認動作,一個阻止事件死在它的軌道中,並停止傳播。說他們是一樣的完全不正確。 –

+0

我也試過,但沒有工作。 –

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

function onDocumentClick(e){ 

}; 

我想你想的#foo而不是document的點擊,如果是的話,你可以簡單地這樣做:

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

});

既然你必須翻轉一個元素來點擊它,這將工作正常。

+0

我寫道返回false和e.preventDefault()在onDocumentClick func但都did not工作.. –

+0

你到底在做什麼? – locrizak