2015-08-06 3 views
0

Я пытаюсь развязать click без успеха.JQuery. Не отпереть мой .On click event

идея заключается в том, что при вызове метода doUnbind() он должен отвязать click событие, однако это всегда приводит меня в «On` событие

$(document).ready(function() { 
    $('#activeListing tbody').on('click', 'button.update', function() { 
     alert('clicked'); 
    }); 
} 

function doUnbind() { 
    $('#activeListing tbody').off('click', 'button.update', function() { 
     // should unbind but not working 
    }); 
} 
+0

'$ ('# activeListing tbody '). off (' click ',' button.update '); 'или отменить привязку только к определенному событию, использовать пространство имен или обработчик ссылок –

ответ

3

Вы пытаетесь удалить функцию, которая не добавляется. Вам нужно использовать именованную функцию, чтобы вы могли указать jQuery, какую функцию удалить.

function addClick() { 
    alert('clicked'); 
} 

$(document).ready(function() { 
    $('#activeListing tbody').on('click', 'button.update', addClick); 
} 

function doUnbind() { 
    $('#activeListing tbody').off('click', 'button.update', addClick); 
} 

Вы также можете удалить все обработчики событий сразу, но убедитесь, что вы на самом деле хотите, чтобы сделать это:

function doUnbindAll() { 
    $('#activeListing tbody').off('click', 'button.update'); 
} 
+1

Если вы хотите отменить все обработчики щелчков, вы можете сделать $ (' # activeListing tbody ') .off (' Clic k ',' button.update '); без необходимости называть функцию. Но быть конкретным всегда лучше, поэтому решение, изображенное в этом ответе, лучше. – cmertayak

+0

Спасибо @cmertayak, я добавлю это к своему ответу –

0

Использование имен событий:

$(document).ready(function() { 
    $('#activeListing tbody').on('click.update', 'button.update', function() { 
     alert('clicked'); 
    }); 
} 

function doUnbind() { 
    $('#activeListing tbody').off('click.update'); 
}