2012-01-06 3 views
3

У меня есть этот JQueryJQuery UNBIND не работает, как я ожидал

$('input#application_submit.bigbutton[value=Agree]').click(function(e){ 
    e.preventDefault(); 
    var reason = $('.agree_reason:visible'); 
    var reason_text = $('.agree_reason:visible textarea'); 
    if(reason.length == 0){ 
     $('.agree').show(); 
    }else{ 
     if(reason_text.val() == ''){ 
      $('.agree').show(); 
      $('#application_agree').css('border', '1px solid #CC0000'); 
      $('.agree_validation_message').show(); 
     }else{ 
      $('input#application_submit.bigbutton[value=Agree]').unbind(); 
      $('input#application_submit.bigbutton[value=Agree]').click(); 
     } 
    } 
}); 

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

+0

насчет 'вернуться ложным;'? – Sneakyness

+0

@ Незнакомец, вы имеете в виду 'return true ', я думаю. – PeeHaa

+0

Адамс ответ решил проблему ... спасибо – Trace

ответ

6

Вы должны пройти тип события unbind

$('input#application_submit.bigbutton[value=Agree]').unbind("click"); 

Кроме того, на основе комментариев PeeHaa, в application_submit является идентификатор элемента, и так как элементы в DOM являются уникальными (или, по крайней мере, лучше быть), вы можете упростить это

$('#application_submit').unbind("click"); 

Вы почти всегда лучше выбирающий простым id подобным образом, поскольку jQuery может отложить до родного document.getElementById под обложками.

Еще одно усовершенствование было бы:

var reason = $('.agree_reason:visible'); 
var reason_text = $('textarea', reason); // it is faster to let jQuery search in context 
+1

Кроме того, я * думаю * вы можете связать эти вызовы, как и любые другие: '$ ('input # application_submit.bigbutton [value = Agree]'). Unbind (" click "). Click();' –

+1

Пока мы улучшают код: '$ ('input # application_submit')' быстрее, чем '$ ('input # application_submit.bigbutton [value = Agree]')'. Последнее не требуется, потому что вы уже выполняете селектор, основанный на уникальном идентификаторе 'id'. – PeeHaa

+0

Спасибо PeeHaa - +1 –

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