Однажды свяжись с живым функционалом - PullRequest
0 голосов
/ 07 декабря 2011

Как я могу один раз связать клик с живой функцией?

Я пытался:

$('.expansion_button').die('click', function(){
   $('.expansion_button').live('click', expansion);
});

Но это, дважды связать клик после ajax-запроса;

Как я могу исправить?

(мой английский плохой)

Ответы [ 3 ]

1 голос
/ 07 декабря 2011

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

$('.expansion_button').live('click', function(e){

    if( $.data( this, "liveclicked" ) ) {
    return true;
    }

$.data( this, "liveclicked", true );
return expansion.apply( this, arguments );
});
1 голос
/ 07 декабря 2011

Если я правильно понял, попробуйте это

$('.expansion_button').one('click', function(){
   alert('Next click will not alert!');
});  

Здесь - рабочая демонстрация приведенного выше кода

0 голосов
/ 07 декабря 2011

Jquery .die () убивает обработчик, который вы прикрепили к этому элементу. Чтобы связать это, вы просто используете live, как вы это сделали:

 $('.expansion_button').live('click', expansion);

Затем где-нибудь в этой функции, если вы хотите удалить связанное событие, вы затем вызываете .die (), так что-то вроде:

$("unbind-element").click(function () { 
  $(expansion_button).die(); 
});
...