2012-06-26 54 views
1

我有一個關於jQuery的非常概念性的問題。我有這個小提琴綁定點擊處理程序身體只有在點擊元素

http://jsfiddle.net/zvCrN/

我想要做的是: 一個單擊處理程序綁定到的鏈接。 點擊鏈接以顯示警報。 只有在發生這種情況後,才能將點擊事件處理程序綁定到正文,以便正文中任何位置的點擊都會顯示不同的警報。

我敢肯定這是微不足道的,我只是無法環繞它。我如何將處理程序綁定到正文,以便在鏈接點擊時不觸發?

讚賞任何幫助,

+0

我不知道是什麼阻礙了你的。這是傳播嗎?如果是這樣,在鏈接的點擊處理程序中添加'event.stopPropagation()'。 –

回答

2
$("#infolink").click(function(e) { 
    e.stopPropagation(); 
    alert('link') 
}); 

$('body, :not("#infolink")').click(function() { 
    alert('body'); 
}); 

DEMO

+0

你的榜樣讓我朝着正確的方向前進。 http://jsfiddle.net/shQVC/。但我希望有一個更優雅的解決方案來顯示這種因果關係比使用布爾信號量。 – glasspill

+0

@glasspill謝謝,感覺開心 – thecodeparadox

0

嘗試以下操作:

var link = $('#infolink'); 
var handler = function (event) { 
    link.off('click', handler); 
    event.stopPropagation(); 
    $('body').on('click', function (event) { 
    alert('some other message'); 
    }); 
    alert('some message'); 
}; 
link.on('click', handler); 
+0

你的代碼完全符合我的要求。如果鏈接已經發生,我希望身體警報發生。 – glasspill

+0

@glasspill在我的示例中,處理程序僅附加到'#infolink'的單擊事件中的主體。這給出你所要求的行爲。 –

+0

感謝您的回答,但我認爲我需要重新解釋我的問題:我不希望身體警報觸發第一個鏈接點擊。 – glasspill

相關問題