Отмена привязки живого клика по живому элементу не работает должным образом - PullRequest
0 голосов
/ 27 ноября 2011

У меня есть следующая функция для добавления элементов на страницу на лету;

function modalConfirm (title, msgBody, btnOK, btnCancel) {
    element = '<div class="ui-modal-widget"><div class="confirm"><h2>'+title+'</h2><div>'+msgBody+'</div></div>';
    element += '<div class="button-panel" style="float:right; margin-top:-30px; margin-right:5px;">';
    element += '<a href="#" rel="closeModal">'+btnCancel+'</a>';
    element += '<a href="#" rel="confirmModal">'+btnOK+'</a>';
    element += '</div></div>';
    // OPEN MODAL WINDOW

Я вызываю вышеуказанную функцию при нажатии $('a.checkData').

ПРОБЛЕМА


Кажется, все работает нормально, за исключением того, что если я закрываю открытое модальное окно, нажимая $('a[rel=closeModal]') более одного раза, и после этого несколько раз нажимаю $('a[rel=confirmModal]'), он выполняет те же действия столько раз, сколько я нажал $('a[rel=closeModal]').

Пример;

$('a[rel=closeModal]').live('click', function(e) {
e.preventDefault();
// CLOSE MODAL BOX
});

$('a[rel=confirmModal]').live('click', function(e) {
e.preventDefault();
console.log('Modal Is Confirmed');
});

Рассмотрим код выше. При нажатии $('a.checkData') и нажатии пользователем $('a[rel=closeModal]') 5 раз перед нажатием $('a[rel=confirmModal]'). Он будет писать 5 раз Modal Is Confirmed за 1 клик . Если пользователь нажимает $('a[rel=closeModal]') 10 раз, прежде чем нажать $('a[rel=confirmModal]'). Это будет писать 10 раз Modal Is Confirmed.

Буду рад, если вы поможете мне с этой проблемой. Я пытался добавить $('a[rel=confirmModal]').unbind('click'); буквально везде (внутри функции, перед вызовом функции, после вызова функции непосредственно перед / после / внутри $('a[rel=confirmModal]').live('click',function(){});, но безуспешно.

Спасибо за ваше время и заботу заранее.

1 Ответ

1 голос
/ 27 ноября 2011

Вы должны рассмотреть возможность использования jQuery делегат () и jQuery undelegate ()

Это очень похоже на жизнь, однако вы можете выбрать, следует ли связыватьк телу документа или к относительному родителю будущего добавленного элемента.

...