我想在頁面上點擊事件綁定到所有的元素,除了這些元素裏面有一個id選擇頁面上的所有元素,但元素中的所有元素有一個id
$('body :not(#dialog-form *)').off('click').on('click', function (e)
{
//code
});
以上上述代碼將click事件綁定到'dialog-form'內的那些元素。
我想在頁面上點擊事件綁定到所有的元素,除了這些元素裏面有一個id選擇頁面上的所有元素,但元素中的所有元素有一個id
$('body :not(#dialog-form *)').off('click').on('click', function (e)
{
//code
});
以上上述代碼將click事件綁定到'dialog-form'內的那些元素。
你的代碼正在工作,但你想知道發生了什麼。你看,除了一些元素外,你綁定了一切,但是#dialog-form *
在body
之內,這意味着即使#dialog-form *
沒有事件,點擊它將觸發點擊body
(它包含一個事件)。您需要防止起泡:
$('body').off('click').on('click', function (e){
//code
});
$('#dialog-form').on('click', function(e){
e.stopPropagation();
})
而不是綁定的一切,你可以使用'.on'綁定到一個高層次的元素(也許'body'),而忽略發生在指定元素上的事件。 – 2013-08-26 22:42:30
按照@MikeW的建議。將事件綁定到每個元素是一個巨大的性能影響。如果您向不希望事件綁定的元素添加類名稱,則更簡單。然後你可以這樣做:''('body')。on('click',':not(.class-name)',function(){/ * do stuff * /});'。 – Brett