在上面的高度藝術繪畫,綠色廣場是粉紅色的的孩子。粉紅色的一個是由我的功能環繞綠色的,所以綠色方塊可以是任何東西 - 超鏈接,圖像,按鈕等。
我想捕獲一個點擊粉紅色div只有當它不是'點擊綠色元素。
這可以通過在綠色方塊上使用mouseenter翻轉布爾值來完成,但這對我來說似乎是一種混亂的方式。
任何線索?
重要編輯:我不能亂搞綠色廣場,所以沒有添加任何東西到點擊事件。
在上面的高度藝術繪畫,綠色廣場是粉紅色的的孩子。粉紅色的一個是由我的功能環繞綠色的,所以綠色方塊可以是任何東西 - 超鏈接,圖像,按鈕等。
我想捕獲一個點擊粉紅色div只有當它不是'點擊綠色元素。
這可以通過在綠色方塊上使用mouseenter翻轉布爾值來完成,但這對我來說似乎是一種混亂的方式。
任何線索?
重要編輯:我不能亂搞綠色廣場,所以沒有添加任何東西到點擊事件。
你可以這樣做:
$('.pink-box-selector').click(function(e) {
if ($(e.target).is('.pink-box-selector')) {
// do stuff here
}
});
正如一個側面說明,這種解決方案的優點之一是,你不必修改基於你包裝什麼元素的代碼(因爲你說的包裝元素可能會有所不同)。它基本上是白名單,而不是黑名單。 – jmar777
完美。乾杯。 –
請問$("#div_id :not('#excluded_element')).click();
有幫助嗎? http://api.jquery.com/not-selector/
此選擇器不會選擇任何內容。它會查找'#div_id'中的某個* *,它不是*實際存在的唯一元素。 – jmar777
@ jmar777很好的觀察。 –
設置一個單獨的單擊事件偵聽器 「綠色」 元素,並將它event.preventDefault()
兩個選項。您可以先檢查目標是否是綠色格。
$('#pinkdiv').click(function(e) {
if ($(e.target).is('#greendiv')) return;
// handle the event
});
或者您可以正常編寫粉紅色div的點擊處理程序,並停止點擊綠色div傳播。
$('#greendiv').click(function(e) {
e.stopPropagation();
});
@ jmar777的第一個選項檢查目標是否是粉紅色div的解決方案可能更有意義。 –
這個也不錯,不過:)。 – jmar777
http://jsfiddle.net/rlemon/d8qVp/
$("#pink").click(function(){
if(!$("#green").is(":hover")) {
alert('here');
}
});
我最傷心,SO不讓我創建新標籤 '令人興奮的圖像'= [ –
做這個線程:http://stackoverflow.com/questions/ 6635659/jquery-bind-click-any-but-element與你的問題大致相同? – JMax
類似但不完全。 –