2013-08-26 164 views
0

我想在頁面上點擊事件綁定到所有的元素,除了這些元素裏面有一個id選擇頁面上的所有元素,但元素中的所有元素有一個id

$('body :not(#dialog-form *)').off('click').on('click', function (e) 
    { 
    //code 
    }); 

以上上述代碼將click事件綁定到'dialog-form'內的那些元素。

+1

而不是綁定的一切,你可以使用'.on'綁定到一個高層次的元素(也許'body'),而忽略發生在指定元素上的事件。 – 2013-08-26 22:42:30

+1

按照@MikeW的建議。將事件綁定到每個元素是一個巨大的性能影響。如果您向不希望事件綁定的元素添加類名稱,則更簡單。然後你可以這樣做:''('body')。on('click',':not(.class-name)',function(){/ * do stuff * /});'。 – Brett

回答

1

你的代碼正在工作,但你想知道發生了什麼。你看,除了一些元素外,你綁定了一切,但是#dialog-form *body之內,這意味着即使#dialog-form *沒有事件,點擊它將觸發點擊body(它包含一個事件)。您需要防止起泡:

$('body').off('click').on('click', function (e){ 
    //code 
}); 

$('#dialog-form').on('click', function(e){ 
    e.stopPropagation(); 
}) 

小提琴:http://jsfiddle.net/d4gLd/

+0

Gotcha!但我希望'dialog-form'內的元素的事件處理程序能夠觸發它們的事件! – Sabby62

+0

我不明白爲什麼它會阻止他們! –

+0

'e.stopPropagation();''cuz'' – Sabby62

相關問題