2015-08-15 4 views
0

У меня есть сайт, который полностью управляется ajax. Когда страница загружается, страница никогда не загружается полностью, если она не обновляется. У меня есть несколько различных приложений, работающих на этом сайте, и я использую .on() для добавления обработчиков событий на уровне документа, но их следует применять только тогда, когда на этом сайте используется определенное приложение. Чтобы избежать насыщения сайта ненужными обработчиками событий, им интересно, есть ли побочные эффекты использования $ (document) .off(), когда пользователь переключает приложения. Это должно очистить все события, которые я связал, прежде чем присоединять новые. Я просто хочу удостовериться, что я не отказался от чего-то, о чем я не знаю.

+0

никоим образом не знать, что вы можете или не можете отменить в своем приложении ... это ваш код, и мы не можем его увидеть – charlietfl

+0

Чтобы уточнить, я хочу отменить абсолютно все, что я связал. Я просто хочу быть уверенным, что я не отменяю то, что jQuery связывает с документом при его инициализации. –

+0

Ничего не повлияет на ядро ​​jQuery. Любые подключаемые модули должны оцениваться индивидуально, хотя – charlietfl

ответ

2

Вы можете использовать событие jQuery namespaces. Чтобы добавить события в $ (документ), используйте имя приложения в качестве пространства имен, а затем удалите все из них, используя одно и то же пространство имен.

Например, если вы вы приложение под названием «APPA», и вы хотите добавить обработчик событий для серии событий:

$(document).on('resize.appA', function() { }); 
$(document).on('anotherEvent1.appA', function() { }); 
$(document).on('anotherEvent2.appA', function() { }); 

Теперь, чтобы удалить все события приложения на документе просто использовать:

$(document).off('.appA'); 

btw - это будет работать только на события, непосредственно добавленные в документ, а не на детей. Если вы хотите повлиять и на детей, привяжите события к $ (документу) и используйте делегирование событий, чтобы повлиять на детей. Таким образом, вы можете сразу удалить все события приложения.

+0

Я пришел к тому же выводу всего несколько минут назад. Отличный ответ спасибо! –

+0

Добро пожаловать. Межсетевое совпадение событий jQuery было спасательной жизнью бесчисленных раз :) –