2014-11-12 5 views
1

Проблема в том, что селекторы для этого объекта могут быть разными.Как отменить все события из пользовательского объекта?

$('body').on('submit','form',function(){}); 
$('.container').on('submit','form',function(){}); 
$('.container').on('submit','#myform',function(){}); 

И я не знаю, как отменить все эти события. Я могу использовать off(); функция

Но для каждого селектора я не могу; потому что существует большое количество селекторов; Как я могу удалить каждое событие из #myform?

ответ

2

Вы можете сделать:

$("#myform").children().off(); 

или вы можете также использовать *:

$("#myform *").off(); 
+0

Спасибо! Но это не работает http://jsfiddle.net/r0xkd779/ – sandra1n

2

Поскольку вы хотите обрабатывать делегированные обработчики также

$("#myform").off('submit');//remove the submit handlers attached to the form 
$("#myform").parents().off('submit', '#myform');//remove all submit delegated handlers registered to ancestor elements 
//this is dangerous because it could remove common handlers 
$("#myform").parents().off('submit', 'form');//but I don't think there is another easy way 
+0

Отличный человек! Последний вопрос: когда я использую parent(), я мог бы развязать другие формы или нет (потому что вложенные формы невозможны)? – sandra1n

+0

@ sandra1n Единственная проблема, которую я мог видеть, - это если есть другая форма на странице, то есть ли обычный обработчик, который может быть удален –

+0

Почему? Идентификатор - это уникальный селектор ... что означает обработчик u? – sandra1n

Смежные вопросы