2012-02-03 29 views
2

當點擊頁面背景(#page)時,我需要觸發一個事件(例如隱藏浮動購物車),但點擊內部內容時不會發生此事件。所以我需要這個事件發生在空間:頁面減去內容。我如何實現它?由於排除父div的選擇器

如果我有這樣的結構:

<body> 
<div id="page"> 
    <div id="content"> 
    here 
    </div> 
</div> 
</body> 

var outer= jQuery("#page"); 
jQuery(outer).click(function(){ 
    jQuery(cos_de_cumparare).toggle(); 
}); 

回答

2

,你可以檢查事件的目標,並採取相應的行動

var outer= jQuery("#page"); 
outer.click(function(e){ 
     //trigger the event only if the target of the click is the page 
     if(e.target.id === 'page'){ 
     alert('click'); 
     } 
}); 

這裏小提琴http://jsfiddle.net/wNsd7/

+0

我測試過,這似乎是最優雅的解決方案。我感謝你們所有人的幫助。問候 – Kandinski 2012-02-03 11:37:24

1

要做到這一點,你可以停止事件傳播上鍊。

通常的方法做,這是一個click事件附加到子元素,並從停止傳播有這樣的:

$("#page div").click(function(e){ 
    e.stopPropagation(); 
}) 

Here's an example

+0

不,我不認爲這與他正在嘗試做什麼有關 – 2012-02-03 10:29:38

+0

我恭敬地不同意:) – 2012-02-03 10:33:22

+0

啊好吧,你打算沉迷於其他!我一開始並沒有得到它!是的這絕對有效,但可能會導致事件委派的問題。 :) – 2012-02-03 10:36:23

1

試試這個,檢查http://jsfiddle.net/qgUjb/4/

$("#page").click(function(event) { 
    if(event.target.id == "content") return; 
    $("#content").toggle(); 
});