Подтвердить что ты не робот

Как предотвратить неоднократное связывание событий

 $('.ajax').click
 (        
    function()
    {
        // If been bound then we need to return here.
        alert(':D');
    }
 )

 $('.ajax').click
 (
    function()
    {
        // If been bound then we need to return here.
        alert(':D');
    }
 )

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

4b9b3361

Ответ 1

Там действительно хороший способ сделать это в jQuery.

Вот пример.

function alertEvent() {
   alert(":D");
}
$(".ajax").bind("click", alertEvent);
//When you want to ensure it won't happen twice...
$(".ajax").unbind("click", alertEvent);
$(".ajax").bind("click", alertEvent);

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

Ответ 2

Если вы используете jQuery >= 1.7, вы можете использовать API .on()/.off() в сочетании с пространством имен событий. В этом примере .off() вызывается немедленно, чтобы гарантировать, что предыдущие события (любого рода) с пространством имен не связаны:

$("form")
    .off(".validator")
    .on("keypress.validator", "input[type='text']", validate);

Это довольно гибкий API, поэтому вы можете быть очень конкретным, если вам нужно:

$("form")
    .off("keypress.validator", "input[type='text']", validate)
    .on("keypress.validator", "input[type='text']", validate);

Документы: http://api.jquery.com/off/

Ответ 3

попробуйте отвязать его перед привязкой:

$(".ajax").unbind("click").click( 
      function () { 
    alert("Hello"); 
  } );

прочитайте этот для получения дополнительной информации.

Ответ 4

function demo()
{
// your code here which will called on click event
}

$(document).ready(function(){
$('.add').bind('click',demo);

});

//After successfully ajax call response
//Unbind the click event first
$('.add').unbind('click',demo);
//Then again bind the event
$('.add').bind('click',demo);