2012-04-30 107 views
0

我似乎找不到一個正確的選擇方式, 它應該只在DIV的背景上點擊點擊,並且在主圖像上 - 如果有, ,但如果點擊位於其他位置的其他元素在那個div--像一個hrefs等 - 它應該什麼也不做。Jquery選擇器點擊背景+元素?

我嘗試這樣做:

$('#SHOWCASE, #SHOWCASE > img') 

陳列室 - 是DIV的ID和img是直接連接到它的圖像。 但是,如果我添加.Click函數,它仍然觸發該div中的任何元素,如鏈接等,請注意這些鏈接也具有絕對位置。

那麼有沒有解決方案呢?

+1

你能忍受的標記,因爲你選擇的ID它將使easer回答 – Qpirate

+0

這是如果你想讓事件在特定元素上被觸發,你可以給所有這些元素賦予一個類,並給它們以下事件:div()。等等.....}); –

回答

5

在最簡單的方式,只是測試點擊的元素是否是你綁定的處理程序的元素:

$('<selector>').click(function(event) { 
    if(event.target === this) { 
     // do something 
    } 
}); 

參考event.target

0

您需要停止該div中的其他元素冒泡。像jQuery的stopPropagation()應該可以做到這一點。將其添加到#SHOWCASE的所有孩子。

2

這是正常的行爲,因爲事件冒泡的DOM 。您應該檢查targetevent object裏面看到了什麼元素原本點擊:

$('#SHOWCASE').on('click', function (e) { 
    if ($('#SHOWCASE, #SHOWCASE > img').is(e.target)) { 
     // Only do something if it was those elements. 
    } 
}); 
0
$('#hello, #hello > img').on('click', function(e) { 
    if(e.target == this) { 
     console.log(this); 
    } 
});